логирование вводимых команд пользователем

Thank you for reading this post, don't forget to subscribe!

Логи­ро­ва­ни­ем вво­ди­мых команд в Linux тер­ми­на­ле мож­но пре­сле­до­вать ряд целей, напри­мер отправ­ка тако­го рода логов на syslog сер­вер, для ауди­та, исто­ри­че­ской хро­но­ло­гии… Типич­ная ситу­а­ция - на одном сер­ве­ре рабо­та­ет несколь­ко адми­нов, про­грам­ме­ров, про­сто людей. Все эти люди выпол­ня­ют раз­лич­ные коман­ды, что-то дела­ют, а потом с удив­лен­ным лицом гово­рят - я это­го не делал 🙂

Включение логирования

Логи­ро­ва­ние вво­ди­мых команд мож­но настро­ить инди­ви­ду­аль­но для каж­до­го поль­зо­ва­те­ля в фай­ле ~/.bash_profile или гло­баль­но для всех в фай­ле /etc/profile, для это­го доста­точ­но поме­стить в файл настро­ек про­фи­ля скрипт (допу­стим это файл настро­ек кон­крет­но­го поль­зо­ва­те­ля ~/.bash_profile)

Далее необ­хо­ди­мо доба­вить стро­ку с ука­за­ни­ем в какой файл сли­вать логи в настрой­ках rsyslog.conf (ниже регулярка):

Пере­за­пу­стить rsyslog:

При­ме­нить пара­мет­ры про­фи­ля к пользователю:

Отключение логов в messages

Логи будут соби­рать­ся и в users.log и messages, для отклю­че­ния дуб­ли­ро­ва­ния логов в messages доста­точ­но доба­вить / изме­нить в rsyslog.conf пара­метр исклю­че­ния для local7.notice в най­стро­ках messages (я исполь­зую регулярку):

Ротация логов

Для рота­ции с годо­вым интер­ва­лом /размером в 100Мб поло­жим файл users в /etc/logrotate.d с параметрами:

Результат

Теперь смот­рим как выгля­дит ито­го­вый результат: