В целях соответствия требованиям необходимо получить информацию о дате создания локальных (пользовательских и не пользовательских) учетных записей на машинах UNIX.
Есть ли способ (даже если это не самый надежный или точный метод) для сбора такого рода информации?
Например, в качестве альтернативы я отправился на поиски home
даты создания каталога (для учетных записей пользователей), но обнаружил, что для POSIX-совместимых систем временные метки для создания файлов недоступны.
/var/log/auth.log
(возможно , придется искать в повернутых бревнах , а также:/var/log/auth.log.1
,/var/log/auth.log.2.gz
, ...). Это даст вам представление о первой дате аутентификации учетной записи пользователя. Это не будет работать для системных пользователей, а также не будет работать, если учетные записи были созданы дольше, чемsyslog
период ротации вашего журнала./home/user
Ответы:
Если создан и не тронут с момента создания пользователя, вы можете использовать
.bash_logout
файл, чтобы определить дату. От имени пользователя root:ИЛИ, если у пользователя есть домашний каталог, вы можете проверить дату последнего изменения этого каталога:
чтобы получить только дату, которую вы можете использовать
awk
:источник
источник
ls -ld /home/username/
дает время модификации домашнего каталога, которое вряд ли будет полезным, учитывая, что это время обновляется всякий раз, когда файл добавляется или удаляется в домашнем каталоге.Создание учетной записи может быть зарегистрировано. Под Linux (если используется общий набор утилит shadow),
useradd
делает запись в журнале под средствомauth.info
. Этот журнал обычно находится в/var/log/secure
или/var/log/auth.log
(это зависит от распространения).Вы можете проверить свои резервные копии
/etc/passwd
и посмотреть, какая из них является самой молодой, у которой нет этой учетной записи. Я использую и рекомендую etckeeper, чтобы отслеживать изменения/etc
, поэтомуgit annotate /etc/passwd
дал бы мне ответ. (На самом делеgit annotate
, мне сказали бы, когда в последний раз изменялась запись пользователя; немного больше копаний, автоматизация которых выходит за рамки этого ответа, сообщало бы мне, когда была добавлена запись.)Если вам не хватает журналов аудита, резервных копий и истории изменений, вам придется прибегнуть к эвристике. Хорошая подсказка - файл, у которого время изменения инода (ctime) самое старое. Эта эвристика может лгать обоими способами: если каталог перемещается в дом пользователя, он может содержать файлы со старым временем ctime (но для них, которые старше пользователя, их uid не должен быть идентичным пользователю как изменение. of uid включает обновление ctime, поэтому вы можете пропустить те файлы, которые не принадлежат пользователю); и наоборот, некоторые события могут изменить время файла (например, если вся система была восстановлена из резервной копии). Вы можете начать с домашнего каталога пользователя (
ls -Alctr ~bob
| sed -n 2p), который может содержать файлы,/etc/skel
которые пользователь никогда не изменял (.bash_logout
является обычным), и посмотреть, есть ли более старые файлы сfind ~bob ! -cnewer ~bob/.bash_logout -user bob
. С зш, бегиls -ld ~bob/**/*(Doc[1]u:bob:)
,источник
Проверяет дату смены пароля.
источник
Для локальных пользователей вы можете посмотреть время рождения их домашнего каталога для тех систем и файловых систем, которые его записывают (Linux, большинство BSD, по крайней мере, macOS). Как это сделать, зависит от системы .
Для пользователей в каталогах LDAP вы можете посмотреть
createTimestamp
(или возможноwhenCreated
) атрибуты их соответствующей записи LDAP:источник