저는 현재 UNIX 시스템에서 사용자의 마지막 비밀번호 변경을 표시하는 명령을 찾으려고 노력 중입니다.
passwd -Sa 명령을 실행해 보았더니 00/00/0000 형식의 비밀번호 변경 날짜가 표시되었습니다. 하지만 나는 이 명령을 마지막으로 사용한 날짜만 나열하고 싶습니다. grep에 명령을 파이핑해 보았지만 구문이 정확하지 않은 것 같습니다.
이 명령의 결과에 대한 날짜 출력을 찾고 있습니다.
현재 시도된 명령:
grep $USER | passwd -Sa
내 오류에 대한 도움을 주시면 감사하겠습니다!
답변1
더 많은 정보를 제공해 주시면 더 나은 답변을 받으실 수 있습니다. 그런데 OpenSUSE에서 제가 본 것은
passwd -S -a
다음과 같이 의 각 항목에 대한 기록을 제공합니다 /etc/passwd
.
thomas PS 03/01/2013 0 99999 7 -1
따라서 awk로 필터링할 수 있습니다.
passwd -S -a | awk -v user=$USER '{ if ( $1 == user ) { printf "%s\n", $3; } }'
그러나 passwd
명령은 로 실행될 것으로 예상하므로 root
스크립트는 $USER
변수를 사용하는 것보다 더 우아한 작업을 수행해야 합니다(예:현재의사용자). 그 이유는 root
공개되지 않은 내용을 읽고 있기 때문입니다./etc/shadow
당신이 사용할 수있는chage
, 다른 보고서가 표시되지만 빠르게 확인하면 사용자 비밀번호를 묻는 메시지가 표시됩니다(아마도 원하는 것이 아닐 수 있음).
프로그램
chage
을 사용하려면 섀도우 비밀번호 파일이 필요합니다.이
chage
명령은 다음으로 제한됩니다.뿌리-l
권한이 없는 사용자가 자신의 비밀번호나 계정이 만료되는 시기를 결정하는 데 사용할 수 있는 이 옵션은 제외됩니다 .
추가 자료:
- passwd - 사용자 비밀번호 변경, 표시 옵션
-S
및-a
- Shadow - 섀도우 비밀번호 파일, 비밀번호가 마지막으로 변경된 날짜
- 비밀번호 만료 시간 가져오기, 표시되었지만
chage
비밀번호 프롬프트가 생략되었습니다...
답변2
이것은 숙제처럼 들리므로 다음과 같습니다.
sort
원하는 경우 입력을 숫자로 정렬하거나 정의된 여러 열을 기준으로 정렬할 수 있습니다.cut
입력 열의 하위 집합을 인쇄하기 위해 열 구분 기호를 정의하는 데 문자 집합을 사용할 수 있습니다.a | b
명령의 출력을a
command 로 보냅니다b
.head
그리고tail
파일의 첫 번째 줄과 마지막 줄을 각각 반환합니다.- 루트가 아닌 경우(예: 을 사용하는 경우
sudo
) 일반적으로 다른 사용자에게 쿼리할 수 없습니다. 다음을 사용하면 이 문제(및 모든grep
핑) 를 피할 수 있습니다.passwd --status
현재의사용자. - 네가 원한다면사용자가 정기적으로 비밀번호를 변경하는지 확인하세요.Linux 배포판에는 수년 동안 이 기능이 있었으므로 완전한 솔루션이 있다고 확신합니다.