Дата создания локальной учетной записи

9

В целях соответствия требованиям необходимо получить информацию о дате создания локальных (пользовательских и не пользовательских) учетных записей на машинах UNIX.

Есть ли способ (даже если это не самый надежный или точный метод) для сбора такого рода информации?

Например, в качестве альтернативы я отправился на поиски homeдаты создания каталога (для учетных записей пользователей), но обнаружил, что для POSIX-совместимых систем временные метки для создания файлов недоступны.

antiauthor
источник
В грубом приближении, я думаю , что вам лучше сделать некоторые судебно - рыть в /var/log/auth.log(возможно , придется искать в повернутых бревнах , а также: /var/log/auth.log.1, /var/log/auth.log.2.gz, ...). Это даст вам представление о первой дате аутентификации учетной записи пользователя. Это не будет работать для системных пользователей, а также не будет работать, если учетные записи были созданы дольше, чем syslogпериод ротации вашего журнала.
Джозеф Р.
эта конкретная информация нигде не хранится по умолчанию. но вы можете попробовать проверить дату модификации/home/user
Nidal

Ответы:

3

Если создан и не тронут с момента создания пользователя, вы можете использовать .bash_logoutфайл, чтобы определить дату. От имени пользователя root:

ls -l /home/<username>/.bash_logout

ИЛИ, если у пользователя есть домашний каталог, вы можете проверить дату последнего изменения этого каталога:

ls -ld /home/username/

чтобы получить только дату, которую вы можете использовать awk:

ls -ld /home/username/ | awk '{ print $6,$7,$8 }'

источник

Нидал
источник
ls -ld /home/username/дает время модификации домашнего каталога, которое вряд ли будет полезным, учитывая, что это время обновляется всякий раз, когда файл добавляется или удаляется в домашнем каталоге.
Жиль "ТАК ... перестать быть злым"
3

Создание учетной записи может быть зарегистрировано. Под 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:),

Жиль "ТАК - перестань быть злым"
источник
1
$ chage -l fred

Проверяет дату смены пароля.

Pablo
источник
+1: по сравнению с другими ответами, за исключением журналов аудита (которые не должны быть доступны) и LDAP (которые не относятся к локальной учетной записи), у нас нет надежных методов для определения создания даты, просто набор атрибутов, чтобы посмотреть, чтобы получить представление. Это один из них, и в моей системе он оказался самым точным (люди просто не меняли пароли), хотя только с точностью до дней.
user1182474
1

Для локальных пользователей вы можете посмотреть время рождения их домашнего каталога для тех систем и файловых систем, которые его записывают (Linux, большинство BSD, по крайней мере, macOS). Как это сделать, зависит от системы .

Для пользователей в каталогах LDAP вы можете посмотреть createTimestamp(или возможно whenCreated) атрибуты их соответствующей записи LDAP:

ldapsearch -LLL -x -H ldaps://ldap.example.com -s sub \
  -b dc=example,dc=com 'uid=username' createTimestamp whenCreated
Стефан Шазелас
источник