这与我前段时间提出的一个问题有关。
我想记录有关谁在 Linux 上重新启动了某个特定服务的详细信息。
例如:
如果用户 X 重新启动 apache,那么它将记录用户名、时间、服务(即 apache)和状态(成功/失败)。
我可以编写一个小脚本并将其手动添加到服务启动脚本中。
但这是不可能的,因为我有数千台服务器和数十个服务。
有没有其他方法可以做到这一点而无需操作服务启动脚本?
答案1
我建议锁定系统。要求用户使用sudo
,仅允许使用 执行特定命令,并通过禁止和sudo
等来禁止运行任意命令。sudo su
sudo bash
sudo
将记录通过它执行的所有命令,当然包括服务重启。在我的计算机上,它会记录到/var/log/secure
,只有 才能读取root
。
但是,这不会给你带来你最不想要的结果 - 成功或失败。但是你可以使用包装器脚本轻松实现额外的日志记录,你可以要求用户使用该脚本而不是直接启动服务 - 只需小心确保包装器脚本的安全!
因此用户会输入:
sudo wrapper_script start service
或类似的东西。
请注意 sudo 日志两个都原始用户和他们以 sudo 方式执行操作的用户(默认情况下为 root)。