본문 바로가기
Linux

리눅스 계정 패스워드 만료시 계정 잠김 문제

by eden.do 2025. 3. 15.

2023년 4월 14일 작성

chage -E -1 -I 0 -m 0 -M 90 {계정명}
-E (지정한 계정의 만기일 설정) : -1 이면 따로 설정하지 않음 만료 값 지정하지 않거나 만료일 해제할 때 씀.
-I (패스워드 만료시 비활성화 상태로 전환되기까지의 유예기간을 지정하는 옵션) : -I 날짜수 / -1로 설정하면 비활성화 되지 않음. 유예기간 사용 안함. 0으로 설정하면 바아로 락걸림
-m (패스워드 최소 의무 사용일 수를 지정하는 옵션, 최소 며칠이 경과해야 다른 패스워드로 변경할 수 있는지 설정) : 0이면 패스워드 사용해야 하는 최소 조건 없음
-E 옵션으로 지정한 계정 만료일은 비밀번호 만료와는 관계가 없다.

공공 개인 계정 생성시  -I 옵션의 날짜가 0으로 설정되어 있기 때문에 바로 비활성화 되지 않도록 -1로 설정 필요. 
각 항목들이 설정된 것은 /etc/shadow에서 확인 가능

{계정명}:암호해시값:19453:0:90:10:0:: 
  1. 계정명
  2. 암호필드 → hash 함수로 저장
  3. 패스워드 최종 수정일 (ex. 19453 ⇒ 최종 암호 변경일은 [1970-1-1] 이후로 19453일)
  4. 패스워드 최소 사용일 (ex. 0 ⇒ 암호를 변경 후 0일 간의 변경하지 못하고 유지) 설정 안되어 있는 거임
  5. 패스워드 최대 사용일 (ex. 90 ⇒ 암호를 변경하지 않고 사용가능한 일자)
  6. 패스워드 만료 경고일 (ex. 10 ⇒ 암호 만료 10일 전부터 경고)
  7. 패스워드 만료후 유예기간 (ex. 0 ⇒ 계정 종료일 이후에는 로그인 불가) → -1로 변경 필요
  8. 계정 만료일 (ex. 17556 ⇒ 계정 만료일인 [2018-1-25]일은 [1970-1-1] 이후로 17556일) 0으로 설정되어 있으므로 계정 만료가 설정되어 있지 않음을 의미


eden 계정 목록 받아와서 반영, 공용 계정 중에도 비활성화 설정 되어 있는 것들 있어서 수정

- hosts: all
  become: yes
  gather_facts: true
  serial: 1
  tasks:
    - name: check eden account list
      shell: cat /etc/group | grep eden | cut -d ':' -f4
      register: account_list
 
    - name: check account list
      shell: cat /etc/group | grep {{item}} | cut -d ':' -f1
      with_items:
        - "계정1:"
        - "계정2:"
        - "계정3:"
        - "계정4:"
      register: acc_list
       
    - name: account list
      set_fact:
        user_list: "{{account_list.stdout.replace('\n',',').split(',')}}"
 
    - name: chage -I 0 -> -1
      shell: chage -I -1 {{item.stdout}}
      with_items: "{{acc_list.results}}"
      when: item.stdout != ""     
 
    - name: chage -I 0 -> -1
      shell: chage -I -1 {{item}}
      with_items: ""{{user_list}}"
      when: item != ""