unix 계정 정보
passwd
뭔가 이름만 보면 password의 약자일 것 같은 이것은 시스템에 로그인 하는 사용자의 정보가 담긴 텍스트 파일로 해당 파일을 통해 유저가 관리된다.
조금 더 살펴보면

위와 같이 나오는데 잘 보면 :로 나누어지며 총 7구간으로 나누어지는 규칙성이 있다.
이는
name: password: UID: GID: GECOS: home: shell
와 같이 구성되어 있으며 각
- name : 사용자의 계정명
- password: 비밀번호 사용 여부
- 'x' : 비밀번호를 가지고 있으며 /etc/shadow를 참조하여 비밀번호를 확인
- ''(공백) : 비밀번호가 없음
- '*' : 올바르지 않은 비밀번호
- UID : 사용자 고유의 ID값
- GID : 사용자 이름으로 만들어진 그룹의 고유 ID값
- GECOS : 사용자의 역활을 설명
- home : home 경로
- shell : 사용하는 shell의 종류(bash, zsh 등)
를 의미한다.
여기서 passwd를 조금 더 설명하면
x로 되어 있으면 /etc/shadow를 참고하여 비밀번호 확인을 하는 것은 /etc/shadow를 설명할 때 하는것으로 넘어가고
공백과, *의 역활을 좀더 알아보자
공백은 비밀번호가 없다는 뜻으로 비밀번호가 su, ssh등으로 해당 유저의 계정으로 접속은 시도해 비밀번호 확인 절차 없이 바로 접속이 되는 것을 볼 수 있다.
*는 잘못 된 비밀번호를 의미하며 해당 계정은 접속이 안되는 것을 볼 수 있다. 직접 해보자

기본적으로 세팅된 docker에서 /etc/passwd를 확인했을 때 이렇게 되어 있다. 여기서
su test2
를 시도해보면

해당 계정은 없다고 나온다
여기서 sudo vim /etc/passwd로 test2를 추가해보자


하지만 비밀번호를 따로 설정 한 것이 없기에 로그인은 불가능하다. 그럼 공백으로 바꿔 로그인을 시도해보자


비밀번호 입력 없이 바로 귀여운 사서짱과 함께 나오는 것을 볼 수 있다.(작가님 감사합니다!)
그러면 비밀번호를 변경하고 passwd를 *로 바꿔보자


접속이 안되는 것을 알 수 있다.
여기서 다시 test2의 계정의 비밀번호를 변경해보자
sudo passwd test2


비밀번호 부분이 이상하게 변경된 것을 확인 할 수 있다. 그러면 저 해쉬값이 변경한 비밀번호라는 것을 유추할 수 있는데 그럼 나머지 계정들은 x라는것일까?
shadow
여기서 /etc/shadow의 역활을 알 수 있다.

passwd는 별다른 조건 없이 볼 수 있지만 shadow는 권한문제가 발생하는 것을 볼 수 있다.
내용을 확인해 보면 알 수 있는데

여디고 뭔가 passwd와 비슷한 모습을 볼 수 있다.
일단 구조를 간단하게 설명하면
name:encrypted_password:last_password_change:minimum:maximum:warning:inactivity:expiration:
이런 형태를 가지는데
- name : 계정명
- encrypted_password : 해쉬화된 비밀번호
- last_password_change : 마지막 변경일
- minimum : 최소 비밀번호 사용일수
- maximum : 최대 비밀번호 사용일 수
- warning : 만료 전 경고일수
- inactivity :만료 후 유예기간
- expiration : 만료일
계정과 해당 계정의 비밀번호에 관련된 정보를 담고있다.
여기서 만료일과 같이 날짜 관련된 것은 기준일+를 의미하고 기준일은 1970/01/01을 기준으로 얼마가 지났는지를 의미한다.
여기서 /etc/passwd에서 x로 되어 있는 정보들은 이곳에 있는 계정명을 확인하고 같은 계정의 비밀번호를 관리하므로 계정의 비밀번호 탈취 관련(해쉬화 되어 있어 유출되어도 복호화가 쉽지는 않음)문제가 있으므로 권한에 민감하게 되어있다.
그럼 간단하게 테스트 해보고 설명 마치겠다.


초기 상태로 test2에 로그인이 잘 되는 것을 볼 수 있다


여기서 20002은 1970/01/01부터20002일이 지난 오늘을 의미하므로 오늘 만료되어 로그인을 시도하면 접근금지처분을 받은 것을 확인 가능하다.


오늘로부터 하루 지난 20003으로 변경하면 다시 잘 접속 되는 것을 확인 할 수 있다.
:wq