1

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

3 ответа3

1

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

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

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

HISTTIMEFORMAT

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

Справочник по форматированию строки времени

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

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

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

что-то вроде:

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

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

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

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

0

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

cat /home/user_you_are_looking_for/.bash_history
0

Согласно этому ответу на сайте «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 для поиска по всей истории bash:

grep -e "[command/pattern you are looking for]" /home/*/.bash_history

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .