
Esto está relacionado con una pregunta que hice hace algún tiempo.
Quiero registrar los detalles sobre quién reinició un servicio en particular en Linux.
Por ejemplo:
Si un usuario X reinicia Apache, registrará el nombre de usuario, la hora, el servicio (es decir, Apache) y el estado (éxito/fallo).
Puedo hacer esto escribiendo un pequeño script y agregándolo manualmente al script de inicio del servicio.
Pero esto no sería posible porque tengo miles de servidores y decenas de servicios.
¿Hay alguna otra manera de hacer esto sin manipular el script de inicio del servicio?
Respuesta1
Yo sugeriría bloquear el sistema. Exija que el usuario use sudo
, solo permita que se ejecuten comandos específicos usando sudo
y no permita la ejecución de comandos arbitrarios prohibiendo cosas como sudo su
y sudo bash
.
sudo
registrará todos los comandos ejecutados a través de él, incluidos, por supuesto, los reinicios del servicio. En mi máquina inicia sesión en /var/log/secure
, que solo es legible por root
.
Sin embargo, eso no le dará lo último que deseaba: éxito o fracaso. Pero podría implementar fácilmente ese registro adicional con un script contenedor, que podría requerir que el usuario lo use en lugar de iniciar el servicio directamente; ¡solo tenga cuidado de que el script contenedor sea seguro!
Entonces el usuario escribiría:
sudo wrapper_script start service
o algo así.
Tenga en cuenta que sudo registraambosel usuario original y el usuario como sudo (por defecto, root).