Как я могу проверить историю команд пользователя в Unix?

13

Я знаю, что команда 'history' дает мне список команд, которые я набрал в терминале Unix.

Как посмотреть историю команд для всех пользователей, которые в данный момент вошли в систему?

багор
источник
Не связано с программированием. Я предлагаю вам спросить на superuser.com .
Не существует стандартного инструмента для получения информации, поэтому я думаю, что это связано с программированием (по крайней мере, в смысле «сценариев»).
IanH

Ответы:

11

Вы получите список пользователей, вошедших в данный момент в систему /var/run/utmp(см. man 5 utmp). История хранится в ~ / .history или для пользователя bash в ~ / .bash_history. Другие оболочки могут использовать другие файлы истории, поэтому не так просто получить всю информацию.

Кроме того, если пользователь вошел в систему несколько раз, файл .bash_history не всегда надежен.

Для чтения utmpфайла существует «внешний интерфейс» who, так что вы также можете написать скрипт-оболочку для итерации вошедших в систему пользователей.

IanH
источник
2
Текущая история хранится в памяти. Файл истории показывает только то, что было написано с использованием history -aили подобным образом или когда пользователь выходит из оболочки.
Приостановлено до дальнейшего уведомления.
2
Обратите внимание, что имена файлов, приведенные в этом ответе, являются просто значениями по умолчанию. Каждый пользователь мог установить свое местоположение (см. Ответ Джой). Если пользователь использует разные оболочки, он может хранить свои истории в разных местах, отличных от заданных по умолчанию (например, ~ / mybashhist, ~ / histories / ksh или somesuch). Кроме того, помните, что просмотр данных пользователя может иметь юридические последствия.
DevSolar
3
echo $HISTFILE

Затем просмотрите этот файл.

Радость
источник
1
Это работает, только если вы ранее использовали среду этого пользователя (как он мог установить HISTFILEдля чего-то другого).
DevSolar