LINUX

2주차 - Trainer1~Trainer5

너굴맨이해치움 2022. 5. 1. 08:58

1주차에 구축해 두었던 환경에 기반하여 PuTTY로 Trainer 서비스에 접속을 시도했다.

(절차는 1주차 정리 글에 적어두었던 대로의 절차를 따른다. VMWare Workstation으로 로그인 - ifconfig 명령어를 쳤을 때 나오는 inet addr 란의 주소를 PuTTY에 입력 - ID: Trainer / pass: welcome (아이디와 패스워드 관련해서는 여기를 참고) 입력 순대로 이행한다.) 이렇게 하면...

글씨가 깨진다.

 

https://m.blog.naver.com/kbn1994/221791880003

 

Putty 한글깨짐 : 모든 해결방법 다 정리해 놓았어요

안녕하세요. 도나입니다:D Putty를 이용해서 해커스쿨FTZ 문제를 푸려고 하는데 한글깨짐 문제로 인해...

blog.naver.com

 

구글링 결과 위와 같은 게시글을 찾을 수 있었다. 나는 4번 방법까지 해서도 해결이 안 되어서 당황했는데, PuTTY Configuration에서 Session 탭에 설정을 저장해 두어야지만 변경한 설정이 적용된다는 사실을 나중에서야 알았다.

 

Saved Sessions에 FTZ라고 저장된 것이 내가 저장해 둔 설정이다. 1주차 때 FTZ라는 이름으로 내 컴퓨터의 IP address를 저장해 두었는데, 저것을 Load해 놓은 상태로 설정을 변경하고 다시 Save 버튼을 눌러 주어야 설정이 정상적으로 작동된다.

 

 


trainer1 - 프롬프트와 디렉토리 경로

 

프롬프트

[trainer1@ftz trainer1]$

 

위와 같은 것이 프롬프트이다. 접속 ID, 서버, 현재 위치가 차례대로 나타난다.

이 프롬프트가 나타난다는 것은 사용자가 리눅스 서버에 '성공적으로 로그인' 했다는 것을 의미한다.

 

접속 성공 > ID와 비밀번호 입력 > 프롬프트 표시(로그인 성공)

 

 

 

ls 명령어와 디렉토리

디렉토리 : 리눅스에서의 '폴더' 개념. ls 명령어를 통해 볼 수 있다.

 

ls는 영어 소문자 l과 s를 정확히 입력해야만 인식된다.

 

ls 명령어 : 디렉토리와 파일 리스트를 출력한다.

하지만 너무 일렬이지 않은가? 이래서야 디렉토리와 파일을 구분하기가 어렵다.

때문에 있는 것이 ls -l 명령어이다. (-l의 l도 역시 소문자 l임에 주의한다.)

 

 

ls -l 명령어

입력하면 위와 같은 결과가 나온다.

 

-rw-rw-r--   1 trainer1 trainer1   779   9월 24 18:37  start. txt

mode, 성격  Permission 정보      용량  생성 날짜       파일 이름

 

Permission에 관해서는 추후에 training9에서 배우게 될 예정이다.

(사용자별로 주어진 파일에 대한 읽기나 쓰기, 수정 등의 권한을 의미하는 게 아닌가 하고 추측해 본다.)

 

mode에 관해서도 추후 training4에서 배우게 될 예정이다.

가장 앞의 "-" 부분은 파일의 성격을 나타낸다. -이면 파일, d이면 디렉토리이다.

위에 적어 둔 예시에서는 맨 앞이 -로 되어 있으므로, 이것은 파일이다.

 

 

+ PuTTY에서 백스페이스 키를 활용하는 방법

더보기

퀴즈 게임을 풀다가 실수로 잘못된 값을 입력해서 백스페이스를 눌렀는데, 문자가 정상적으로 지워지지 않고 이상한 값이 입력되는 현상이 발생했다. 로그인을 할 때에도 사실 이 문제는 꽤 귀찮다. PuTTY에서도 백스페이스 키를 정상적으로 이용하려면 아래와 같이 하면 된다. (참고 사이트는 여기)

Configuration에서 Keyboard 탭에 들어가면 The Backspace key 설정이 있을 것이다.

Control-? (127) 란에 체크가 되어 있다면 Control-H 란으로 바꾸어 체크해 주면 된다.

 

말 그대로 간단한 퀴즈다. 100점을 내면 리눅서의 기질이 보인다고 칭찬도 해 준다.

 

 

숨겨진 파일 (ls -a, ls -al 명령어)

중요한 파일은 숨겨져 있어 ls 명령어만으로는 보이지 않을 때도 있다.

이럴 때는 -a 명령어를 덧붙이면 숨겨진 파일까지 전부 확인이 가능하다.

 

숨겨진 파일은 파일명 가장 앞에 "." 이 들어가 있다.

그 말인 즉슨, 파일명 가장 앞에 .을 붙이면 파일을 숨겨진 파일로 만들 수 있다는 뜻이다.

 

-a 옵션과 -l 옵션을 합친 ls -al 명령어를 사용하면 위와 같이 숨겨진 파일까지 포함하여 예쁘게 정리된 형식으로 보여 준다.

여기까지가 training1의 내용이다.

 

trainer2의 비밀번호를 얻었다. 다음 과정을 진행하자.

 


trainer2 - 디렉토리와 파일의 기본 조작

 

위에서 얻은 password인 linuxer를 입력한다.

 

 

pwd 명령어

pwd 명령어 : 현재 자신이 들어가 있는 디렉토리 경로를 출력한다.

지금 있는 경로는 /home/trainer2 이다.

프롬프트에서 현 위치를 나타낼 때에는 앞부분은 모두 생략하고 가장 뒤쪽의 trainer2만 보여주게 된다.

 

리눅스에서 /는 최상위 디렉토리(=루트 디렉토리)이다. 그러니까 /home/trainer2라는 경로는

/(루트 디렉토리) > 그 중에서도 home 디렉토리 > 또 그 중에서도 trainer2 디렉토리

라는 뜻이 된다.

 

 

cd 명령어 (디렉토리 이동)

그럼 위의 디렉토리로 올라가거나 특정 디렉토리로 이동하려면 어떻게 하면 될까?

먼저 올라가는 명령어를 입력해 보자. 입력에 조심할 필요가 있다. cd(한 칸 띄고).. (점 두 개) 이런 식으로 입력해야 한다.

점 두 개 사이의 간격도 상당히 넓어 보이지만 점 두 개는 붙여서 입력해야 한다.

 

cd .. 명령어 : 한 단계 의 디렉토리로 이동한다.

입력 후 다시 pwd 명령어로 경로를 확인해 보면 한 단계 위의 디렉토리인 /home으로 이동된 것을 볼 수 있다.

그럼 내려가는 건? 간단하다. 똑같이 cd를 적고 한 칸 띄어 준 뒤 이동할 디렉토리 이름을 써 준다.

 

cd (이동할 디렉토리명) 명령어 : 현재 있는 위치에서 해당 디렉토리로 이동한다.

 

 

이외에도 cd / 를 입력하면 한번에 루트 디렉토리까지 갈 수 있고,

cd (경로명) 을 입력하면 한번에 그 경로의 말단에 위치한 디렉토리까지 갈 수 있다.

ex: cd /home/trainer2 : 루트에서 한번에 trainer2까지 이동

 

 

새로운 디렉토리 생성 및 제거 (mkdir, rmdir 명령어)

 

일단은 ls -al을 입력하여 현재 어떤 파일과 디렉토리들이 있는지 (숨겨진 파일들까지 포함해) 확인해 보자.

현재는 위와 같은 파일과 디렉토리들이 들어 있다.

 

mkdir (만들 디렉토리 이름) 명령어 : 새로운 디렉토리를 생성한다.

위에선 linuxer라는 이름의 디렉토리를 만들게 되었다.

ls -al 명령어로 확인해 보면 맨 하단에 linuxer라는 새로운 디렉토리가 생겨난 것을 알 수 있다.

그럼 지울 때는? 간단하다. MaKe했으니 이제 ReMove하면 된다.

 

rmdir (지울 디렉토리 이름) 명령어 : 해당 디렉토리를 삭제한다.

위와 같이 linuxer 디렉토리가 깔끔하게 지워진 것을 볼 수 있다.

 

 

파일 복사, 삭제, 이동 (cp, rm, mv)

 

+Putty에서 한글을 입력했을 때 .이 입력되며 깨지는 경우 여기를 참고

 

한글을 입력한 부분에 .이 입력되며 깨지는 것을 볼 수 있다. 해결 방법은 위의 하이퍼링크 참고.

cp (파일1) (파일2) : 파일1을 파일2라는 이름으로 복사한다.

 

 

rm (파일이름) : 해당 파일을 삭제한다.

 

mv (파일1) (파일2) : 파일1을 파일2라는 이름으로 복사한 뒤, 원본인 파일1은 삭제한다.

파일1이라는 이름의 파일이 사라지고 완전히 같은 내용의 파일2가 새로 생기는 것이기 때문에, 이름을 바꾸는 기능으로 자주 사용된다.

 

 

trainer2 과정도 끝이 났다. 다음 과정의 비밀번호는 computer이다.


trainer3 - 접속 정보와 다른 유저들

 

w 명령어

터미널을 통해 접속했다 = 텔넷을 통해 서버에 접속했다

콘솔을 통해 접속했다 = 직접 컴퓨터에 리눅스를 설치하고 부팅하여 로그인했다

터미널과 콘솔은 같은 의미이나 위와 같은 차이에 따라 구별해 사용된다.

 

아침 시간대라 그런지 나밖에 없다. 7:32 am.

w 명령어 : 서버에 접속한 사용자들의 정보를 테이블 형태로 보여준다.

 

  1. USER : 로그인한 ID. root 이외의 ID들이 서버에 신세를 지고 있는 user들이다.
  2. TTY : 접속 방법. 콘솔로 접속했다면 tty, 터미널로 접속했다면 pst/(번호)로 뜰 것이다. 이 번호는 접속한 터미널이 몇 번째라는 것을 나타내 주는 숫자이며, 0번부터 시작한다.
  3. FROM : 접속한 사람의 컴퓨터 ip. 콘솔로 접속한 root는 ip가 뜨지 않는다.
  4. LOGIN@ : 로그인한 시간.
  5. IDLE : 지연시간. 해당사용자가 입력하지 않은 채로 켜두기만 한 시간을 나타낸다.
  6. JCPU : CPU를 사용한 지연 시간.
  7. PCPU : WHAT 필드에 있는 명령이 지연된 시간.
  8. WHAT : 사용자들이 현재 사용하고 있는 명령.

 

finger -l, tty, ifconfig 명령어

-l은 소문자 l이다.

finger -l 명령어 : 해당 사용자에 대한 상세한 정보를 볼 수 있다.

 

tty 명령어 : 자신의 터미널 정보를 확인한다.

 

ifconfig 명령어 : 현재 접속한 서버의 ip 주소를 확인한다.

VMWare에서 PuTTY로 넘어올 때도 이 명령어로 inet addr를 확인했으니 아마 익숙할 것이다.

 

 

사용자들과의 채팅 (write 명령어)

내 윈도우에서는 위의 내용이 실행되지 않아서 부득이하게 별도 아이디 로그인 절차를 생략했다.

write (ID) /dev/pts/(pts번호) 명령어 : 해당 pts번호와 ID를 가진 사용자에게 쪽지를 보낸다.

 

 

wall 명령어

wall (쪽지 내용) : 현재 접속하고 있는 모든 사용자들에게 쪽지를 보낸다.

 

trainer3 과정도 무사히 수료했다. 다음 과정의 비밀번호는 mungguta이다.


trainer4 - 리눅스의 하위 디렉토리와 주요 파일들

 

루트 디렉토리 레벨에서 ls -al 명령어를 사용해서 루트 디렉토리에 속한 디렉토리들을 죽 나열해 보았다.

각각 무엇인지 하나씩 살펴보면 다음과 같다.

 

  • bin : ls, rm 등의 필수적인 리눅스 명령어 실행 파일들이 위치해 있다.
  • boot : 부팅 관련 파일과 커널(해당 운영체제의 핵심부)이 위치한다.
  • dev : 하드웨어 관련 정보들이 파일 형태로 저장되어 있다.
  • etc : 여타 중요한 파일들이 위치한다. 패스워드 파일, 쉐도우 파일, 리눅스 설정 파일 대부분이 여기에 있다.
  • home : 일반 사용자들의 디렉토리들이 들어가 있다. guest, trainer1~10, level1~10 등 우리가 교육받는 프로그램은 여기 있다.
  • lib : 라이브러리 파일들이 위치한다.
  • mnt : mount 명령으로 마운트시킨 시디롬, 플로피 디스켓 등이 들어간다. (요즘 쓰는 장치들과는 차이가 있으니 대강 외부 기억 장치들이 위치하는 곳이라고 이해하면 될 듯 하다.)
  • sbin : 기본 명령을 제외한 시스템 관리용 실행 파일들이 들어간다.
  • tmp : 임시로 파일을 저장하는 디렉토리. 권한에 구애받지 않는다.
  • usr : 응용 프로그램들이 설치되는 곳이다.
  • var : 각종 임시 파일과 외부 접속 로그 파일들이 들어간다.

 

파일들 중 중요한 것은 이 정도로 요약된다.

이후에는 간단한 퀴즈를 풀어볼 수 있다. 위에서 한 내용들을 적당히 리마인드하며 풀면 어렵지 않다.

 

 

다음 과정으로 가는 비밀번호는 goodluck이다.


trainer5 - 각종 정보를 확인하는 법

 

해킹도 무작정 해서 될 것이 아니다. 정보 수집은 해킹의 기초이고, 이 정보의 질과 양이 해킹의 성공 여부를 좌우한다.

서버에 설치된 프로그램, 서버 주인이 하고 있는 일, 서버를 형성하는 OS에 대한 정보 등 알아낼 수 있는 모든 것이 정보가 된다.

 

whoami 명령어 : 자신의 ID를 출력한다.

 

id 명령어 : 자신의 정보를 좀 더 상세히 출력한다.

이 정보에 대한 분석은 trainer9에서 추후 다룬다.

 

cat /etc/passwd 명령어 : 모든 사용자 정보를 담고 있는 /etc/passwd 파일을 연다.

위의 리스트에서 가장 왼쪽에 있는 단어가 사용자들의 아이디이다.

이 파일을 분석하는 방법은 trainer6에서 배울 것이다.

 

uname -a 명령어 : 해당 서버의 커널 버전을 출력한다.

커널 버전은 리눅스의 성능과도 직결되며, 커널을 이용한 해킹도 자주 이루어지기 때문에

서버가 아이디에 있는 상태에서 정보를 캘 때는 보통 가장 먼저 커널 버전을 본다.

 

root 권한 = 리눅스/유닉스에서 모든 파일을 관리하는 절대적인 관리자 권한.

통상적으로 리눅스는 여러 명의 사용자가 각각 자신에게 부여된 권한만큼만 파일을 제어할 수 있으나

root 권한을 가진 사람은 권한의 제약을 받지 않고 서버를 조작할 수 있다.

 

패키지 : 한 프로그램과 그 프로그램이 실행되기 위해 존재하는 부속 파일들을 모두 합친 것.

리눅스에는 많은 버전이 있으나, 그것들에 설치된 패키지의 종류는 각각 다르다.

 

cat /etc/*release 명령어 : 서버에 설치된 OS 버전을 출력한다.

 

rpm -qa 명령어 : 패키지 정보를 얻는다.

이 명령어로 얻어진 정보에서 나타나는 패키지의 버전을 보고 해킹 가능 여부를 판단할 수도 있다.

상당히 스크롤을 차지한다...

 

 

cat /proc/cpuinfo 명령어 : 해당 서버의 cpu 정보를 확인한다.

 

이것도 상당히 길다.

 

이렇게 해서 trainer5 과정까지 무사히 끝이 났다. trainer6 과정으로 가는 비밀번호 coffee를 얻었다.