Дата створення локального рахунку


9

З метою дотримання вимог існує необхідність отримання інформації щодо дати створення локальних (користувальницьких та некористувацьких) облікових записів на машинах UNIX.

Чи є спосіб (навіть якщо це не найнадійніший чи точний метод) для збору такої інформації?

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


У грубому наближенні, я думаю , що вам краще зробити деякі судово - рити в /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 (якщо використовується загальний тіньовий набір утиліт), 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:).


1
$ chage -l fred

Перевіряє дату зміни пароля.


+1: Порівняно з іншими відповідями, за винятком журналів аудиту (які не повинні бути доступними) та LDAP (які не стосуються локального облікового запису), у нас немає надійних методів визначення створення побачення, лише купа атрибутів, на які слід ознайомитися, щоб отримати деяке уявлення. Це одна з них, і в моїй системі вона виявилася найбільш точною (люди просто не змінювали паролі), хоча тільки з точністю днів.
користувач1182474

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.