OS/Linux

[Linux] /etc/passwd와 /etc/shadow

Ma_Sand 2023. 6. 13. 01:37
반응형

/etc/passwd

/etc/passwd는 시스템에 등록된 사용자의 정보가 담긴 파일이다. 해당 파일로 사용자의 계정과 인증을 관리한다. passwd라는 이름 때문에 패스워드 정보가 담긴 파일이라 생각할 수 있으나, 패스워드 정보는 /etc/shadow 파일에 담겨있다.

 

 

root:x:0:0:root:/root:/bin/bash

 

▶ 각 필드에 대한 설명

  • 계정명(root): 사용자의 계정명을 의미한다.
  • 패스워드(x): 계정의 패스워드 필드이며, x는 사용자의 패스워드가 /etc/shadow에 암호화되어 저장돼있음을 의미한다.
  • UID(0): 사용자의 유저 ID 필드이며, 0은 root의 UID임을 의미한다. (root는 관리자 계정)
  • GID(0): 사용자의 그룹 ID 필드이며, 0은 root의 GID임을 의미한다. (root는 관리자 그룹)
  • Comment(root): 일반적으로 사용자의 이름을 정의하며, 사용자와 관련된 기타 정보를 보여준다.
  • 홈 디렉토리(/root): 계정명의 홈디렉토리를 의미한다. root의 홈 디렉토리는 /root이며, 다른 사용자의 홈 디렉토리는 보통 /home 하위에 위치한다.
  • 로그인 쉘(/bin/bash): 사용자가 로그인 시 사용할 쉘을 의미한다. 사용자의 쉘은 bash 쉘을 사용하며, 로그인이 불필요한 계정(애플리케이션)에 대해선 /usr/sbin/nologin이나 /bin/false, /sbin/nologin 등으로 정의된다.

 

 

 

/etc/shadow

/etc/shadow는 암호화된 패스워드와 패스워드 설정 정책이 담긴 파일이다. 해당 파일은 관리자 계정과 관리자 그룹만 읽을 수 있다.

 

 

root:$6$Msir./sm$cid8VgP:18693:0:99999:7:::

 

▶ 각 필드에 대한 설명

  • 계정명(root): 사용자의 계정명을 의미한다.
  • 암호화된 패스워드($6$Msir./sm$cid8VgP): 암호화된 패스워드를 의미한다. 해당 패스워드는 $로 구분되어 있는데, $algorithm_id$salt$encrypted_password로 구분된다. algorithm_id는 암호학적 해시 id를 말하며, 1은 MD5를, 2는 BlowFish를, 5는 SHA-256을, 6은 SHA-512를 의미한다. salt는 각 해시에 첨가할 랜덤값이며, 해당 랜덤값에 따라 해시값이 변경된다. encrypted_password는 알고리즘과 salt로 패스워드를 암호화한 값을 의미한다.
  • 만약, 설정값이 *이면 패스워드가 잠긴 상태로, 로그인이 불가하다. !면 패스워드가 잠긴 상태로, 로그인을 할 수 없거나 사용자를 생성하고 패스워드를 설정하지 않은 상태이다. 빈 값이면 패스워드가 설정되지 않은 상태로, 로그인이 가능하다.
  • 마지막 변경일수(18693): 마지막으로 패스워드를 변경한 날을 의미한다. 이는 1970년 1월 1일을 기준으로 일수로 표시한다.
  • 패스워드 최소 사용기간(0): 패스워드를 변경한 후 해당 패스워드를 최소 n일은 사용해야함을 의미한다. 이 기간에는 패스워드를 변경할 수 없다.
  • 패스워드 최대 사용기간(99999): 패스워드를 변경한 후 만료일수를 의미한다. 보통 90일을 권장한다.
  • 경고(7): 패스워드 만료 이전에 경고할 경고 일수를 의미한다.
  • 비활성화: 패스워드가 만료된 후에 계정이 잠기기 전까지의 비활성 일수를 의미한다. 해당 n일 내에 패스워드를 변경해야 계정이 잠기지 않는다.
  • 만료일: 계정 만료일을 의미하며, 1970년 1월 1일 기준으로 일수를 나타낸다.

 

반응형