мы работаем на серверах CentOS, доступных более чем сотне сотрудников по SSH, каждый со своим логином. Работает нормально history
bash команда показывает все команды, выполняемые всеми сотрудниками, однако он не указывает, какой сотрудник команда была запущена. Возможно ли, чтобы история показывала не только команду bash, которая была запущена, но и пользователя SSH, которым она была запущена?
Есть ли способ определить, какой пользователь выполнил команду в истории bash?
3 ответа
похоже, вы хотите больше аудита в вашей системе в целом, однако в отношении Bash и истории вы можете включить отметку времени. Это в сочетании с последней командой и специальным grep должно помочь в определении того, какой конкретный пользователь совершил преступление. э-э, команды.
- включить отметку времени истории.
со страницы GNU Bash:
если переменная задана, а не null, то ее значение используется в качестве строки формата для strftime для печати временной метки, связанной с каждой записью истории, отображаемой построением истории. Если эта переменная задана, метки времени записываются в файл истории, чтобы их можно было сохранить в сеансах оболочки. Это использует символ комментария истории, чтобы отличить метки времени от других строк истории.
ссылка на форматирование строку
- использовать последнюю команду
последний покажет время входа/выхода пользователя. Это сузит поиск до нескольких пользователей.
- grep определенные пользователи совпали выше для определенной команды.
что-то типа:
grep "command" /home/{user_a,user_b}/.history
обратите внимание, что файл истории будет иметь дополнительные данные для метки времени, однако он все равно будет очень читаемым в тексте.
- создать функцию Bash для выполнения всех выше
создать функцию histuser (), которая будет принимать одну аргумент: имя команды, и сделать вышеуказанные поиски, возвращающие имя конкретного пользователя. Если вы хотите это сделать, напишите Мне. Со мной легко, но не дешево.
вы можете попробовать это
cat /home/user_you_are_looking_for/.bash_history
по данным этот ответ на сайте "Unix & Linux Stack Exchange" вы могли бы использовать getent
для прокрутки домашнего каталога каждого пользователя и поиска команды / шаблона в этих выходных данных:
getent passwd |
cut -d : -f 6 |
sed 's:$:/.bash_history:' |
xargs -d '\n' grep -H -e "[command/pattern you are looking for]"
или grep
для поиска все Баш истории, как это:
grep -e "[command/pattern you are looking for]" /home/*/.bash_history
Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]