규정 준수를 위해 UNIX 시스템에서 로컬 (사용자 및 비 사용자) 계정 작성 날짜와 관련된 정보를 가져와야합니다.
그런 종류의 정보를 수집 할 수있는 방법이 있습니까 (가장 신뢰할 수 있거나 정확한 방법이 아니더라도)?
예를 들어, 대안으로 home
디렉토리 작성 날짜 (사용자 계정의 경우)를 검색했지만 POSIX 호환 시스템의 경우 파일 작성을위한 타임 스탬프를 사용할 수 없음을 발견했습니다.
/home/user
규정 준수를 위해 UNIX 시스템에서 로컬 (사용자 및 비 사용자) 계정 작성 날짜와 관련된 정보를 가져와야합니다.
그런 종류의 정보를 수집 할 수있는 방법이 있습니까 (가장 신뢰할 수 있거나 정확한 방법이 아니더라도)?
예를 들어, 대안으로 home
디렉토리 작성 날짜 (사용자 계정의 경우)를 검색했지만 POSIX 호환 시스템의 경우 파일 작성을위한 타임 스탬프를 사용할 수 없음을 발견했습니다.
/home/user
답변:
사용자 작성 이후에 작성 및 조작하지 않은 경우 .bash_logout
파일을 사용하여 날짜를 결정할 수 있습니다. 루트 실행으로 :
ls -l /home/<username>/.bash_logout
또는 사용자에게 홈 디렉토리가있는 경우 해당 디렉토리의 마지막 수정 날짜를 확인할 수 있습니다.
ls -ld /home/username/
사용할 수있는 날짜 만 얻으려면 awk
:
ls -ld /home/username/ | awk '{ print $6,$7,$8 }'
ls -ld /home/username/
홈 디렉토리의 수정 시간을 제공하며, 파일이 홈 디렉토리에서 추가되거나 제거 될 때마다이 시간이 업데이트되는 경우 유용하지 않습니다.
계정 생성이 기록 될 수 있습니다. Linux (공통 섀도 유틸리티 제품군을 사용하는 경우) useradd
에서 시설 아래에 로그 항목을 작성합니다 auth.info
. 이 로그는 일반적으로 /var/log/secure
또는 /var/log/auth.log
(배포에 따라 다름)에 있습니다.
백업을 확인 /etc/passwd
하고이 계정이없는 가장 어린 백업을 확인할 수 있습니다 . 에서의 변경 사항을 추적하기 위해 etckeeper 를 사용하고 추천 /etc
하므로 git annotate /etc/passwd
답변을 드리겠습니다. (실제로 git annotate
사용자의 항목이 마지막으로 변경된 시간을 알려줍니다.이 답변 범위를 벗어난 자동화를 조금 더 파면 항목이 추가 된 시점을 알려줍니다.)
감사 로그, 백업 및 개정 내역이없는 경우 휴리스틱에 의존해야합니다. 좋은 힌트는 inode 변경 시간 (ctime)이 가장 오래된 파일입니다. 이 휴리스틱은 두 가지 방법으로 둘 수 있습니다. 디렉토리가 사용자의 집으로 이동 된 경우 디렉토리에 오래된 ctime이있는 파일이 포함될 수 있습니다 (그러나 사용자보다 더 오래된 파일 인 경우 uid는 사용자의 변경 사항이 아니어야합니다) uid는 ctime을 업데이트하므로 사용자가 소유하지 않은 파일은 건너 뛸 수 있습니다). 반대로 일부 이벤트는 파일의 ctime을 변경할 수 있습니다 (예 : 전체 시스템이 백업에서 복원 된 경우). 사용자의 홈 디렉토리 ( ls -Alctr ~bob
| sed -n 2p) 에서 시작할 수 있습니다 . 여기에는 /etc/skel
사용자가 수정하지 않은 파일 ( .bash_logout
일반적인 파일)이 포함될 수 있으며 이전 파일이있는 파일이 있는지 확인하십시오 find ~bob ! -cnewer ~bob/.bash_logout -user bob
. zsh를 사용하여 실행ls -ld ~bob/**/*(Doc[1]u:bob:)
.
$ chage -l fred
비밀번호 변경 날짜를 확인합니다.
로컬 사용자의 경우, 자신의 홈 디렉토리에서 볼 수 있었다 출생 이러한 시스템과 파일 시스템 그 기록이 (리눅스, 대부분의 BSD, 맥 OS 이상) 시간. 이를 수행하는 방법은 시스템에 따라 다릅니다 .
LDAP 디렉토리에있는 사용자 의 경우 해당 LDAP 항목 의 createTimestamp
(또는 가능하면 whenCreated
) 속성을 볼 수 있습니다 .
ldapsearch -LLL -x -H ldaps://ldap.example.com -s sub \
-b dc=example,dc=com 'uid=username' createTimestamp whenCreated
/var/log/auth.log
(당신은뿐만 아니라 회전 로그에보고해야합니다 :/var/log/auth.log.1
,/var/log/auth.log.2.gz
, ...). 이렇게하면 사용자 계정이 처음 인증 된 날짜를 알 수 있습니다. 그러나 시스템 사용자에게는 작동하지 않으며 계정이syslog
로그 교체 기간 보다 오래 전에 계정을 만든 경우에도 실패합니다 .