Есть ли способ определить, какой пользователь выполнил команду в истории bash?

мы работаем на серверах CentOS, доступных более чем сотне сотрудников по SSH, каждый со своим логином. Работает нормально history bash команда показывает все команды, выполняемые всеми сотрудниками, однако он не указывает, какой сотрудник команда была запущена. Возможно ли, чтобы история показывала не только команду bash, которая была запущена, но и пользователя SSH, которым она была запущена?

5
задан JakeGould
источник

3 ответов

похоже, вы хотите больше аудита в вашей системе в целом, однако в отношении Bash и истории вы можете включить отметку времени. Это в сочетании с последней командой и специальным grep должно помочь в определении того, какой конкретный пользователь совершил преступление. э-э, команды.

  1. включить отметку времени истории.

со страницы GNU Bash:

HISTTIMEFORMAT

если переменная задана, а не null, то ее значение используется в качестве строки формата для strftime для печати временной метки, связанной с каждой записью истории, отображаемой построением истории. Если эта переменная задана, метки времени записываются в файл истории, чтобы их можно было сохранить в сеансах оболочки. Это использует символ комментария истории, чтобы отличить метки времени от других строк истории.

ссылка на форматирование строку

  1. использовать последнюю команду

последний покажет время входа/выхода пользователя. Это сузит поиск до нескольких пользователей.

  1. grep определенные пользователи совпали выше для определенной команды.

что-то типа:

grep "command" /home/{user_a,user_b}/.history

обратите внимание, что файл истории будет иметь дополнительные данные для метки времени, однако он все равно будет очень читаемым в тексте.

  1. создать функцию Bash для выполнения всех выше

создать функцию histuser (), которая будет принимать одну аргумент: имя команды, и сделать вышеуказанные поиски, возвращающие имя конкретного пользователя. Если вы хотите это сделать, напишите Мне. Со мной легко, но не дешево.

1
отвечен Daniel 2015-02-02 21:28:05
источник

вы можете попробовать это

cat /home/user_you_are_looking_for/.bash_history
0
отвечен Unnikrishnan 2015-02-02 20:44:13
источник

по данным этот ответ на сайте "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
0
отвечен JakeGould 2017-04-13 12:37:10
источник

Другие вопросы bash command-history command-line ssh