
Это связано с вопросом, который я задал некоторое время назад.
Я хочу регистрировать сведения о том, кто перезапустил определенную службу в Linux.
Например:
Если пользователь X перезапускает Apache, то он регистрирует имя пользователя, время, службу (т. е. Apache) и статус (успех/неудача).
Я могу сделать это, написав небольшой скрипт и добавив его вручную в скрипт запуска службы.
Но это невозможно, поскольку у меня тысячи серверов и десятки сервисов.
Есть ли другой способ сделать это, не манипулируя скриптом запуска службы?
решение1
Я бы предложил заблокировать систему. Требуйте от пользователя использовать sudo
, разрешайте выполнение только определенных команд с помощью sudo
, и запрещайте запуск произвольных команд, запрещая такие вещи, как sudo su
и sudo bash
.
sudo
будет регистрировать все команды, выполненные через него, включая, конечно, перезапуски служб. На моей машине он регистрируется в /var/log/secure
, который доступен для чтения только root
.
Однако это не даст вам последнего, чего вы хотели — успеха или неудачи. Но вы могли бы легко реализовать это дополнительное ведение журнала с помощью скрипта-обертки, который вы могли бы потребовать от пользователя использовать вместо прямого запуска службы — просто будьте осторожны и сделайте скрипт-обертку безопасным!
Итак, пользователь должен ввести:
sudo wrapper_script start service
или что-то вроде того.
Обратите внимание, что логи sudoобаисходный пользователь и пользователь, от имени которого выполняется sudo (по умолчанию root).