etc_security_lastlog 시각화

etc_security_lastlog 시각화

나는 비활성 사용자 ID를 확인하기 위해 etc_security_lastlog의 데이터를 시각화하는 간단한 방법을 찾고 있습니다. "비활성" 사용자는 time_last_login이 충분히 오래되었는지 여부에 따라 결정됩니다. 어떻게 해야 합니까?

lp:
time_last_unsuccessful_login = 1174162435
tty_last_unsuccessful_login = /dev/pts/7      
host_last_unsuccessful_login = 1x.xxx.xxx.x.x                                    
unsuccessful_login_count = 1         

smtsftp:
unsuccessful_login_count = 3         
time_last_login = 1382043613
tty_last_login = /dev/ssh-16842912
host_last_login = 1x.xxx.xxx.x.x.net.intra                       
time_last_unsuccessful_login = 1382083294
tty_last_unsuccessful_login = ssh
host_last_unsuccessful_login = 1x.xxx.xxx.x.x.net.intra

svcsinae:
unsuccessful_login_count = 0         

privil1:
unsuccessful_login_count = 0
time_last_login = 1567112152
tty_last_login = /dev/pts/1
host_last_login = 11x.xxx.xxx.x.x              
time_last_unsuccessful_login = 1507892677
tty_last_unsuccessful_login = ssh
host_last_unsuccessful_login = 1x.xxx.xxx.x.x 

답변1

간단한 awk 필터를 사용하여 이 문제를 해결할 수 있습니다. 현재 타임스탬프와 관심 있는 마감일을 전달하면 됩니다. 입력을 구문 분석하여 사용자 이름과 time_last_login 값을 찾습니다. 기한보다 빠른 값을 찾으면 해당 사용자에게 이를 보고합니다.

다음 예에서는 대략적인 1년(31,536,000초)을 사용합니다.

awk -v now=$(date +%s) -v cutoff=31536000 '
  /^[^-+@~ ][^:"#,=\\\/?` ]+:$/ { 
    user=$1
    sub(/:$/, "", user)
  }
  /time_last_login = [[:digit:]]+/ { 
    if (now - $3 > cutoff) print user " has not logged in within the cutoff"
  }
  ' /etc/security/lastlog

사용자 이름을 검색할 때 사용하는 정규식은 다음에서 유래합니다.MK 사용자 문서. 사용자 이름(행)을 캡처한 후 사용자 이름에서 후행 콜론을 제거합니다.

관련 정보