7. 사용자 관련 설정 파일들 /etc/shadow, etc/skel, etc/default/useradd, etc/login.defs

2022. 9. 16. 11:22Linux

먼저 /etc/shadow에 대해서 알아보겠습니다.

 

/etc/shadow에는 사용자별 암호화된 패스워드와 패스워드 정책이 기재돼 있습니다.

관리자 계정과 그룹만이 이 파일을 읽을 수 있습니다.

 

이중 사용자 하나를 골라 각 속성에 대한 설명을 해보겠습니다.

hmh : 사용자명

$6$YJJssyld$iAyO4A.COGHNGpGDOQE.PZziabGdSJbEt4HTGdWeNNEbx549gABpuYTlx67blclO27XC1AHS1IRhQuFJTUBGm/

: 암호화된 패스워드

19253 : 암호 마지막으로 변경한 날. 1970년 1월 1일 기준으로 지나간 일 수로 표시됩니다.

0 : 암호 최소 사용기간

99999 : 암호 최대 사용기간

7 : 암호 만료 이전 경고일 수 

 : 암호 만료 후 비활성화 기간. 비활성화 기간 동안 암호를 변경해야 계정이 잠기지 않습니다.

 : 만료일. 역시 1970년 1월 1일 기준으로 지나간 일 수로 표시됩니다.


사용자의 패스워드 만기 정보를 변경 및 설정하는 명령어에 대해서 알아보겠습니다.

 

# chage [옵션] 사용자명

 

옵션 -

l : 지정한 사용자의 암호 정보 확인

d : 마지막 암호 변경일을 수정

I : 암호 만료 후 유예기간 설정

E : 계정의 만료일 설정

m : 암호 최소 사용일 설정

M : 암호 최대 사용일 설정

W : 암호 만료 전 경고 메세지 발송기간 설정

 

hmh 사용자의 암호 정보를 확인해 보겠습니다.

# chage -l hmh

/etc/shadow 보다 정보를 알기 쉽게 볼 수 있습니다.

 

이제 시나리오를 설정하고 그 시나리오대로 chage 명령어를 이용하여 hmh의 암호만기 설정을 해보겠습니다.

마지막 암호 변경일 : 22/09/18

I암호 최소 사용일 : 3일

암호 최대 사용일 : 30일

암호 만료 전 경고메세지 발송기간 : 7일

암호 만료 후 유예기간 : 5일

계정의 만료일 : 22/11/01

 

# chage -m 3 -M 30 -W 7 -I 5 -E 22/11/01 hmh

 

shadow 파일안에서 hmh 사용자의 내용도 변경된 모습입니다.

 

설정 후

  1. 최소 사용일 전에 암호 변경 시도 시 메세지
  2. 최소 사용일 이후 암호 변경 시도 시 메세지
  3. 암호 만료 전 경고메세지
  4. 암호 만료 후 유예기간 중 메세지
  5. 유예기간 지난 후 메세지
  6. 계정 만료 시 메세지

까지 확인해 보겠습니다.

 

확인 전에 날짜와 관련된 명령어에 대해서 알아보겠습니다.

 

# date [옵션 '날짜 시간']

옵션 -

- s : 날짜와 시간을 변경. root만 사용 가능

옵션없이 date를 입력하게 되면 현재 날짜와 시간이 나오게 됩니다.

 

1. 최소 사용일 전에 암호 변경 시도 시 메세지

passwd 명령 입력 후 마지막에 오류가 뜨면서 암호가 변경되지 않는 모습입니다.

 

2. 최소 사용일 이후 암호 변경 시도 시 메세지

암호 최소 사용일과 최대 사용일 사이인 2022/09/25일로 설정했더니 암호변경이 성공한 모습입니다.

 

3. 암호 만료 전 경고 메세지

hmh로 로그인하니 4일 안에 암호가 만료된다고 경고해 줍니다.

 

4. 암호 만료 후 유예기간 메세지

접속하자마자 암호를 변경하라는 메세지와 상태가 됩니다.

 

5. 유예기간 지난 후 메세지

계정이 만료되었다고 뜹니다.

 

6. 계정 만료 후 메세지

유예기간 지난 후 메세지와 동일합니다.


/etc/skel 파일에 대해서 알아보겠습니다.

skel은 skeleton 즉 뼈대라는 단어를 따왔습니다. 사용자의 홈 디렉토리를 만드는 뼈대가 되기 때문입니다.

 

/etc/skel 파일의 내용을 보면 우리가 사용자를 추가하고 난 후 그 사용자의 홈 디렉토리를 확인했을때와 같습니다.

/etc/skel
/home/uskel

 

여기서 우린 사용자의 홈디렉토리는 /etc/skel을 그대로 복사하는 것을 눈치챌 수 있습니다.

 

한번 /etc/skel에 관리자가 사용자에게 요구하는 메뉴얼 파일을 넣어본다고 가정하겠습니다.

 

manual.txt파일을 넣은 이후부터 추가되는 사용자들의 홈디렉터리에는 똑같이 manual.txt 파일이 생깁니다.


/etc/login.defs 파일에 대해서 알아보겠습니다.

 

/etc/login.defs 파일은 사용자 생성 시 기본 값을 정의한 파일입니다.

 

/etc/login.defs 파일의 항목에 대해서 말씀드리겠습니다.

  • MAIL_DIR : 기본 메일 디렉터리
  • PASS_MAX_DAYS : 패스워드 최대 사용일
  • PASS_MIN_DAYS : 패스워드 최소 사용일
  • PASS_WARN_AGE : 패스워드 만료 경고일
  • PASS_MIN_LEN : 패스워드 최소 길이
  • UID_MIN, UID_MAX : 사용자 계정의 UID 범위
  • SYS_UID_MIN, SYS_UID_MAX : 시스템 계정의 UID 범위
  • GID_MIN, GID_MAX : 사용자 계정의 GID 범위
  • SYS_GID_MIN, SYS_GID_MAX : 시스템 계정의 GID 범위
  • CREATE_HOME : 홈 디렉터리 생성 여부
  • UMASK : umask 값 설정
  • USERGROUPS_ENAB : 사용자 계정 삭제시 그룹 삭제 여부
  • ENCRYPT_METHOD : 암호화 기법

 

이 중 패스워드, UID/GID를 설정해 보겠습니다.

 

/etc/passwd 파일을 확인해 보면 /etc/login.defs 를 편집하기 전에 추가한 사용자들과

편집한 후 추가한 사용자의 UID/GID가 확실히 차이나는 모습입니다.

 

또 /etc/shadow 파일을 확인해 보면 암호 관련 설정에서도 차이나는 모습입니다.


마지막으로 /etc/default/useradd 파일에 대해서 알아보겠습니다.

 

/etc/default/useradd 파일도 /etc/login.defs 처럼 사용자 생성 시

각종 설정을 디폴트로 셋팅할수 있게 해주는 파일입니다.

 

다음과 같은 항목이 있습니다.

  • GROUP : UID와 같은 GID를 생성하지 않을 시 기본적으로 속하게 되는 그룹을 지정
  • HOME : 사용자의 홈 디렉토리가 위치하게될 상위 디렉토리
  • INACTIVE : 패스워드 유예기간
  • EXPIRE : 계정 만료 기간
  • SHELL : 할당되는 셸
  • SKEL : 스켈 디렉토리의 위치
  • CREATE_MAIL_SPOOL : 메일 파일을 생성할 것인지 지정

 

이 중 GROUP, HOME, SHELL, SKELL, CREATE_MAIL_SPOOL 항목을 알아보겠습니다.

다음과 같이 설정하였습니다.

 

홈 디렉토리가 없다는 에러를 방지하기 위해 미리 만들어 주겠습니다.

 

/skeleton 디렉토리도 만들어 주겠습니다.

 

2222 그룹도 만들어 주겠습니다.

 

이제 -N 옵션을 사용하여 그룹을 생성하지 않으면서 사용자를 만들어 보겠습니다.

 

/etc/passwd파일을 살펴보면

GID 2222, 홈 디렉토리 /HomeSweetHome/udefault, 셸 /bin/sh로 잘 설정됐습니다.

 

그리고 스켈도 확인해 보겠습니다.

 

마지막으로 /var/spool/mail로 가서 확인해보면 CREATE_MAIL_SPOOL 을 no 로 설정했었기 때문에

udefault 사용자의 파일은 없는것을 확인할 수 있습니다.


끝!