2014년 5월 4일 일요일

UNIX/Linux에서 사용자 패스워드 관리

유닉스 및 리눅스는 사용자 계정의 인증을 위해 /etc/passwd 파일에 각 계정별 등록된 사용자의 정보를 보관하고 있다. 과거에는 사용자의 패스워드를 인코딩하여 /etc/passwd 파일의 두번째 필드에 저장하였으나, 오늘날 유닉스 계열 시스템에서는 /etc/shadow 파일에 암호화된 패스워드를 저장하고 있다.

/etc/shadow 파일의 형식

[user_account]:[encrypted_password]:[last_change]:[minlife]:[maxlife]:[warn]:[inactive]:[expires]

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

댓글 없음:

댓글 쓰기