
Isso está relacionado a uma pergunta feita por mim há algum tempo.
Quero registrar os detalhes de quem reiniciou um serviço específico no Linux.
Por exemplo:
Se um usuário X reiniciar o Apache, ele registrará nome de usuário, hora, serviço (ou seja, Apache) e status (sucesso/falha).
Posso fazer isso escrevendo um pequeno script e adicionando-o manualmente ao script de inicialização do serviço.
Mas isso não seria possível porque tenho milhares de servidores e dezenas de serviços.
Existe alguma outra maneira de fazer isso sem manipular o script de inicialização do serviço?
Responder1
Eu sugeriria bloquear o sistema. Exija que o usuário use sudo
, permita apenas que comandos específicos sejam executados usando sudo
, e proíba a execução de comandos arbitrários proibindo coisas como sudo su
e sudo bash
.
sudo
registrará todos os comandos executados por meio dele, incluindo, é claro, reinicializações de serviço. Na minha máquina, ele registra em /var/log/secure
, o que só pode ser lido por root
.
No entanto, isso não lhe dá a última coisa que você deseja: sucesso ou fracasso. Mas você poderia facilmente implementar esse log extra com um script wrapper, que poderia exigir que o usuário usasse em vez de iniciar o serviço diretamente - apenas tome cuidado para tornar o script wrapper seguro!
Então o usuário digitaria:
sudo wrapper_script start service
ou algo assim.
Observe que os registros do sudoamboso usuário original e o usuário que eles estão usando como sudo (por padrão, root).