UNIX/Linux에서 사용자 패스워드 관리
유닉스 및 리눅스는 사용자 계정의 인증을 위해 /etc/passwd 파일에 각 계정별 등록된 사용자의 정보를 보관하고 있다. 과거에는 사용자의 패스워드를 인코딩하여 /etc/passwd 파일의 두번째 필드에 저장하였으나, 오늘날 유닉스 계열 시스템에서는 /etc/shadow 파일에 암호화된 패스워드를 저장하고 있다.
/etc/shadow 파일의 형식
[user_account]:[encrypted_password]:[last_change]:[minlife]:[maxlife]:[warn]:[inactive]:[expires]
/etc/shadow 파일의 형식
[user_account]:[encrypted_password]:[last_change]:[minlife]:[maxlife]:[warn]:[inactive]:[expires]
- user_account : 사용자 계정을 인덱스로 하여 /etc/passwd 파일과 사용자 정보를 서로 연계한다.
- encrypted_password : 암호화된 패스워드로 사용자가 입력한 패스워드를 이 필드와 비교한다.
- 이곳에는 정상암호, NP, *LK*, 공백 중 한가지가 기재됨
- 정상암호는 시스템 관리자가 패스워드를 지정해주거나 일반사용자가 passwd 명령을 통하여 설정할 수 있다.
- NP는 no password를 의미하며, 주로 어플리케이션 계정에 이와 같은 설정을 한다.
- *LK*이 표기되어 있으면 Lock이 설정된 사용자 계정이다. 사용자 생성 후 정상적인 패스워드를 설정해주지 않아도 Lock이 걸린다.
- 공백 : 이곳에 공백으로 설정되어 있으면 이는 시스템 관리자가 암호를 설정해서 사용자에게 알려주는 방식이 아니라, 일반 사용자가 처음 로그인할 때 암호를 직접 설정해서 사용할 수 있도록 하는 방식이다.
- last_change : 마지막으로 패스워드를 변경한 날로 1970년 1월 1일부터 며칠이 지났는지 그 일수로 표기한다. 즉, 유닉스 타임 포멧으로 기록된다.
- minlife : 사용자가 패스워드를 변경할 수 없도록 지정된 기간의 일수
- maxlife : 현재 사용 중인 패스워드를 변경하지 않고 사용할 수 있는 기간의 일수
- warm : maxlife에 지정한 일수가 며칠 남지 않았음을 알리는 필드로 로그인할 때 마다 출력할 경고메세지
- inactive : 시스템에 로그인을 하지 않는 사용자는 계정을 비활성화시켜서 로그인이 되지 않도록 하기 위한 기능으로 입력된 일 수 이상 로그인하지 않으면 계정이 비활성화 된다.
- expires : 사용자 계정이 만료되는 날로 유닉스 타임 포멧으로 표기