본문 바로가기

Linux

07. CentOS7 - 계정 생성 및 패스워드 관련 파일과 명령어

1. /etc/shadow 분석

1.1. 원본 ceo:$6$e2Y8xTVa$LqiVTXQPvt76x6jxRkv0i6EHNe:19047:0:99999:7:::

1.2. 분석

  • ceo:
    • ID
  • $6$e2Y8xTVa$LqiVTXQPvt76x6jxRkv0i6EHNe:
    • 암호화 된 패스워드 (SHA512)
  • 19047:
    • 마지막 패스워드 변경 날짜
    • 1970년 1월 1일을 기준으로 날수를 기록함
  • 0:
    • 패스워드 최소 사용 기간 (이 기간 동안은 패스워드 변경 불가)
  • 99999:
    • 패스워드 최대 사용 일
    • 99999는 무제한을 의미
    • 개인정보보호법 통상 45일, 최대 6개월 이내 변경
  • 7:
    • 경고 메세지 출력일
  • :
    • 유예기간
  • :
    • 계정 만료일

 

※ a, b 계정 생성 및 a 패스워드 설정

  • 계정의 패스워드를 설정한 경우 /etc/shadow 파일에 패스워드가 SHA512로 암호화되어 저장된다.
  • 계정의 패스워드를 설정하지 않은 경우 !!로 저장되는 것을 확인할 수 있다.

 


 

2. 관련 명령어

2.1. chage

2.2. 옵션

  • -l (소문자 L)
    • chage 설정 내용 확인
  • -m
    • 패스워드 최소 사용일
    • ex) chage -m 2 (2일 동안은 패스워드 변경 불가)
  • -M
    • 패스워드 최대 사용일
    • ex) chage -M 30 (30일 후에는 패스워드를 변경해야 함)
  • -W
    • 경고 메세지 출력일
    • ex) chage -W 7 (패스워드 만료일 7일 전부터 패스워드 만료일을 알리는 메세지가 Login 시 출력됨)
  • -I (대문자 i)
    • 유예기간 (출장 등의 이유로 무조건 만료시키면 안됨)
    • ex) chage -I 5 (패스워드 만료 후 5일 동안은 login 시 패스워드를 변경하면 사용가능함을 알리는 메세지 출력 및 패스워드 변경가능)
  • -E
    • 계정의 만료일
    • 모두 패스워드와 관련된 사항이지만 이 부분만 계정과 연관됨. 따라서 패스워드 변경일로부터 모든 설정이 다시 Reset 되지만 해당 부분은 Reset되지 않음
    • 명확한 기일이 정해진 프로젝트 인력 등에 설정
    • ex) chage -E 2022/03/31

 

※ 계정 a의 chage 설정 내용 확인 (-l 옵션)

 

※ 계정 a의 패스워드 최소 사용일 3일로 설정 (-m 옵션)

테스트1
테스트2

  • a 계정 로그인 후 패스워드 변경 시도 시 메세지가 출력되며 패스워드가 변경되지 않는다.
  • date -s 명령어를 사용하여 시스템 시간을 현재 시간기준 7일 뒤인 2022/03/05일자로 임의 변경 후에 passwd 명령어를 사용하여 패스워드 변경을 진행할 경우 새 암호를 입력할 수 있는 것을 확인할 수 있다.

 

※ 계정 a의 패스워드 최대 사용일을 30일로 변경 (-M 옵션)

테스트

  • 테스트를 위해 암호 만료일 이후로 시스템 시간을 강제로 변경한 후 a 계정으로 로그인 진행
  • 암호 변경 메세지가 출력되며, 암호를 변경해야 로그인이 가능하다.

 

※ 계정 a의 패스워드 만료 경고 메세지 출력일을 5일로 변경 (-W 옵션)

테스트

  • 암호 만료일 3일 전으로 시스템 시간 변경 후 a 계정으로 로그인 진행
  • 만료 일자를 알리는 메세지가 출력된다. → Warning: your password will expirre in 4 days

 

※ 계정 a의 패스워드 유예기간 5일로 변경 (-I 옵션), 테스트를 위해 시스템 시간 변경

테스트

  • 암호 만료일 이후 ~ 비활성화 기간 전인 2022/03/31 일자로 시스템 시간 변경 후 a 계정으로 로그인 진행
  • 패스워드 만료 및 변경 안내 메세지가 출력된다. → You are required to change your password immediately .....

 

 

 

※ 계정 a의 계정 만료일 2022/05/01로 변경 (-E 옵션)

테스트

  • 계정 만료일 이후로 시스템 시간 변경 후 a 계정 로그인
  • 계정 만료 메세지가 출력된다.

 

※ 계정 a의 패스워드 변경 후 chage 설정 정보 확인

  • 패스워드 유예기간으로 시스템 시간 변경
  • a 계정으로 로그인 후 패스워드 변경
  • chage -l a 명령어를 사용하여 설정 정보를 확인해보면 계정 만료 외에 정보가 모두 변경된 것을 확인할 수 있다.
  • 계정 만료 정보는 패스워드를 변경해도 Reset 되지 않는다.

[문제 풀어보기]

 

[문제 1]

password 최소 사용일 수 : 4일

password 만료 경고일 수 : 7일

password 사용 최대일 수 : 50일

password inactive 기간 : 5일

계정 만료일 : 2022/05/31

 

 

pw 최소 사용일 테스트

 

 

시스템 시간 변경 - pw 만료일 경고기간

pw 만료일 경고 메세지 테스트

 

 

시스템 시간 변경 - pw 유예기간

pw 유예기간 테스트

 

 

시스템 시간 변경 - pw 유예기간 이후

pw 만료 테스트 (접속 불가)

 

 

시스템 시간 변경 - 계정 만료일 이후

계정 만료 테스트 (접속 불가)


3. /etc/default/useradd

useradd 명령어를 사용하여 계정 생성 시 useradd파일에 설정되어있는 내용을 참조한다.

 

3.1. 파일 내용

  • GROUP
    • useradd 명령어를 사용 시 -N 옵션을 주면 해당 그룹으로 계정이 생성됨
  • HOME
    • 계정 생성 시 지정되는 홈 디렉토리 경로
  • INACTIVE
    • 패스워드 유예기간
    • pw 최대 사용일이 지정되어야만 설정됨
  • EXPIRE
    • 계정 만료일
    • ex) 2022/05/01
  • SHELL
    • 로그인 시 사용할 쉘
  • SKEL
    • 사용자 계정 생성 시 사용자의 홈디렉토리에 복사해가는 디렉토리
  • CREATE_MAIL_SPOOL
    • 계정 생성 시 메일 사서함 파일을 생성할 것인지의 여부
    • 메일 사서함 파일 경로 : /var/spool/mail/사용자

※ 유저 aa 생성. 이때 사용자 홈디렉토리는 /home_1 디렉토리 아래에  생성, 유예기간은 7일, 계정 만료일은 2022/05/01로 설정, 로그인쉘은 /bin/sh, skel 디렉토리의 위치는 /etc/skel_1, 메일사서함파일 생성되도록 지정

(-N 옵션 지정하지 않음)

  • aa 계정 생성 시 홈디렉토리, 계정 만료일, 로그인쉘, skel 디렉토리, 메일사서함파일 모두 정상적으로 설정된 것을 확인할 수 있다.
  • /etc/shadow 파일의 패스워드 유예기간은 정상적으로 설정 되었으나 chage -l 명령어로 확인해보면 유예기간이 설정되지 않은 것을 확인할 수 있다.
    • 암호 만료일을 지정하지 않으면 유예기간이 설정되지 않는다.
  • 계정 생성 시 지정한 그룹 ID로 설정되지 않은 것을 확인할 수 있다.
    • 계정 생성 시 지정한 그룹 ID로 설정하기 위해서는 useradd 명령어 사용 시 -N 옵션을 지정한다.

※ 암호 만료일을 설정한 후 chage 설정 내용을 다시 확인해보면 유예기간이 암호만료일 7일 이후로 설정된 것을 확인할 수 있다.

※ 계정 생성 시 -N 옵션을 주어 위에서 생성했던 aa계정과 동일한 설정으로 bb 계정을 생성해 보자

  • /etc/default/useradd 파일에서 설정한 100으로 그룹ID가 설정된 것을 확인할 수 있으며, 그 외 정보는 aa계정과 동일하다.

 


 

4. /etc/login.defs

사용자 계정의 설정과 관련된 기본값을 정의한 파일

 

4.1. 파일 내용

항목 기본값 의미
MAIL_DIR /var/mail 기본 메일 디렉토리
PASS_MAX_DAYS 99999 (무제한) 패스워드 최대 사용 기간
PASS_MIN_DAYS 0 패스워드 최소 사용 기간
PASS_MIN_LEN 5 패스워드 최소 길이
PASS_WARN_AGE 7 경고 메세지 출력일
UID_MIN, UID_MAX 1000~60000 사용자 계정의 UID 범위
SYS_UID_MIN, SYS_UID_MAX 100~999 시스템 계정의 UID 범위
GID_MIN, GID_MAX 1000~60000 사용자 계정의 GID 범위
SYS_GID_MIN, SYS_GID_MAX 100~999 시스템 계정의 GID 범위
UMASK 022 umask 값 설정
USERGROUPS_ENAB yes 사용자 계정 삭제 시 그룹 삭제 여부
ENCRYPT_METHOD SHA512 암호화 기법

 


 

[문제 풀어보기]

chage 명령어X

/etc/default/useradd, /etc/login.def 파일 활용

 

[문제1]

유저 test1 생성
이때 코멘트는 admin, 기본그룹 201, 사용자 홈 디렉토리는 home_2 아래에 생성되도록, 패스워드 유예기간은 3일, 계정 만료일은 2022.07.21, 
사용자 메일 사서함 파일은 생성하지 않으며, 패스워드 최소 사용일은 4일, 패스워드 최대 사용일은 50일, 패스워드 최소 길이는 6으로 지정한다. (그 외 설정은 기본 설정)

/etc/default/useradd 파일 설정 내용
/etc/login.def 파일 설정 내용
계정 생성 및 결과 확인



[문제2]

유저 test2 생성
이때 코멘트는 sales 기본그룹 202, 사용자 홈 디렉토리는 home_2 아래에 생성되도록, 패스워드 유예기간은 5일, 계정 만료일은 2022.04.01, 
로그인쉘은 sh 로 지정, 사용자 메일 파일은 /var/spool/mail_1아래에 생성, 패스워드 최소 사용일은 3일, 패스워드 최대 사용일은 30일, 경고메세지는 만료 5일 전부터 출력하도록 지정한다. (그 외 설정은 기본 설정)

/etc/default/useradd 파일 설정 내용
/etc/login.def 파일 설정 내용
계정 생성 및 결과 확인



[문제3]

시스템 계정 test3 생성. 코멘트는 systemadmin으로 생성.

  • 시스템 계정 생성 시 UID는 201~999 사이의 비어있는 번호로 지정된다.
  • 시스템 계정은 패스워드 설정에 영향을 받지 않은 것을 확인할 수 있다. (패스워드 사용기간, 유예기간, 계정 만료일 등)