지난 포스팅에서도 언급했듯 이번 포스팅에서는 /etc/passwd
파일을 분석하겠습니다.
/etc/passwd passwd
파일의 역할은 training4에서 간단하게 살펴봤습니다. 서버를 사용하는 사용자들의 정보를 간단히 기록해두는 파일이라고 했었죠. 이제 passwd
파일을 분석하기 위해 프롬프트에 cat /etc/passwd
를 입력합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 [trainer6@ftz trainer6]$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin rpm:x:37:37::/var/lib/rpm:/bin/bash vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin pcap:x:77:77::/var/arpwatch:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin squid:x:23:23::/var/spool/squid:/sbin/nologin webalizer:x:67:67:Webalizer:/var/www/html/usage:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin named:x:25:25:Named:/var/named:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash guest:x:1000:1000::/home/guest:/bin/bash trainer1:x:2001:2001:Trainer 1:/home/trainer1:/home/trainer1/sh trainer2:x:2002:2002:Trainer 2:/home/trainer2:/home/trainer2/sh trainer3:x:2003:2003:Trainer 3:/home/trainer3:/home/trainer3/sh trainer4:x:2004:2004:Trainer 4:/home/trainer4:/home/trainer4/sh trainer5:x:2005:2005:Trainer 5:/home/trainer5:/home/trainer5/sh trainer6:x:2006:2006:Trainer 6:/home/trainer6:/home/trainer6/sh trainer7:x:2007:2007:Trainer 7:/home/trainer7:/home/trainer7/sh trainer8:x:2008:2008:Trainer 8:/home/trainer8:/home/trainer8/sh trainer9:x:2009:2009:Trainer 9:/home/trainer9:/home/trainer9/sh trainer10:x:2010:2010:Trainer 10:/home/trainer10:/home/trainer10/sh level1:x:3001:3001:Level 1:/home/level1:/bin/bash level2:x:3002:3002:Level 2:/home/level2:/bin/bash level3:x:3003:3003:Level 3:/home/level3:/bin/bash level4:x:3004:3004:Level 4:/home/level4:/bin/bash level5:x:3005:3005:Level 5:/home/level5:/bin/bash level6:x:3006:3006:Level 6:/home/level6:/bin/bash level7:x:3007:3007:Level 7:/home/level7:/bin/bash level8:x:3008:3008:Level 8:/home/level8:/bin/bash level9:x:3009:3009:Level 9:/home/level9:/bin/bash level10:x:3010:3010:Level 10:/home/level10:/bin/bash level11:x:3091:3091::/home/level11:/bin/bash level12:x:3092:3092::/home/level12:/bin/bash level13:x:3093:3093::/home/level13:/bin/bash level14:x:3094:3094::/home/level14:/bin/bash level15:x:3095:3095::/home/level15:/bin/bash level16:x:3096:3096::/home/level16:/bin/bash level17:x:3097:3097::/home/level17:/bin/bash level18:x:3098:3098::/home/level18:/bin/bash level19:x:3099:3099::/home/level19:/bin/bash level20:x:3100:3100::/home/level20:/bin/bash clear:x:3101:3101::/home/clear:/bin/bash
지난 시간에 봤던 내용들이 출력됐습니다. 복잡하지만 한 줄씩 살펴보겠습니다.
1 root:x:0:0:Admin:/root:/bin/bash
위의 문자열은 ‘:’를 기준으로 하여 7개의 필드로 나뉘어집니다.
첫 번째 필드에 적힌 부분은 로그인할 때 사용하는 ID입니다. 참고로 ID는 whoami
, id
명령어로도 확인할 수 있었죠?
두 번째 필드는 x
라는 문자만 있습니다. 이것은 리눅스 5.0v까지는 사용자의 실제 암호가 암호화되어 저장되어 있었지만, 크래커들이 이 암호를 해독하는 프로그램을 만들어 암호를 알았내기 때문에 보안상의 이유로 해당 필드를 사용하지 않습니다. 대신 /etc/shadow
라는 파일에 사용자들의 암호를 모아두는 새로운 방식이 등장했고, 이 파일을 관리자만이 읽을 수 있도록 설정되어 있습니다. 만약 권한이 없는 파일을 열려하면 다음과 같은 에러 메시지가 출력됩니다.
1 2 [guest@ftz guest]$ cat /etc/shadow cat: /etc/shadow: 허가 거부됨
세 번째 필드는 로그인할 때 사용한 이름이 컴퓨터 쉽게 읽을 수 있는 숫자 아이디로 표시된 것입니다.
네 번째 필드 또한 세 번째 필드처럼 해당 사용자가 속해있는 그룹을 의미합니다.1 root : x : 0 : 0 : Admin : /root : /bin/bash
컴퓨터가 위의 사용자를 인식할 때, “0이라는 사용자이고, 해당 사용자는 0이라는 그룹에 속해있다” 라고 판단한다고 합니다.
다섯 번째 필드는 사용자의 이름입니다. 대학 서버들은 모든 학생들에게 리눅스 계정을 준다고 하는데, 이 필드에 그 학생의 실명이 들어간다고 합니다.
여섯 번째 필드는 사용자가 로그인에 성공하면 기본적으로 위치할 디렉토리를 표시합니다.
마지막 필드는 사용자가 로그인에 성공했을 때, 처음으로 실행하게 될 프로그램을 나타냅니다. 일반적으로 로그인하면 위의 출력결과처럼 쉘이 실행됩니다.
FTZ training6 정리글을 마칩니다.
trainer7 비밀번호 확인하기