/etc/shadow에서 비밀번호가 변경될 때마다 사용자 이름을 얻고 싶습니다. 내 스크립트는 다음과 같습니다.
while inotifywait -e attrib /etc/shadow; do
#edit user
while IFS=: read -r f1 f2
#get username for changed password
done < $file
#end edit user
done
어떻게 하면 쉽게 할 수 있나요?
답변1
마지막 비밀번호 변경을 표시하려면 다음을 사용하세요.passwd
passwd -S | awk '{print $3}'
또는 다른 사용자 이름으로
sudo passwd -S user_name | awk '{print $3}'
/etc/passwd
따라서 스크립트에서 사용자 이름을 반복하여 각 사용자(예: ID가 1000보다 큰 사용자)의 타임스탬프를 표시할 수 있습니다.
while inotifywait -e attrib /etc/shadow; do
awk -F: '($3 >= 1000) {print $1}' /etc/passwd | xargs -I{} passwd -S {} | awk '{print $1,$3}'
done
정확히 어떤 항목이 변경되었는지 확인하려면 의 출력을 저장 awk …
하고 다음 시작과 비교해야 합니다.
예
% passwd -S | awk '{print $3}'
07/14/2015
% passwd
Changing password for aboettger.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
% passwd -S | awk '{print $3}'
10/01/2015
또는 구체적인 사용자 계정의 경우
% sudo passwd -S root | awk '{print $3}'
05/29/2015
아니면 모든 사용자에게
% awk -F: '($3 >= 1000) {print $1}' /etc/passwd | xargs -I{} passwd -S {} | awk '{print $1,$3}'
passwd: You may not view or modify password information for nobody.
aboettger 10/01/2015