我正在使用 Debian 7.8(wheezy)和 lighttpd 1.4.31 与 nagios 3.4.1。
当我正常启动 lighttpd (以 root 身份) 时,一切都按预期工作:
/etc/init.d/lighttpd start
但是,当 nagios 启动 lighttpd 时,一切都会发出 404 错误,并且不会将任何内容记录到/var/log/lighttpd/access.log
或/var/log/lighttpd/error.log
。我可以通过以 root 身份发出以下命令来手动模拟相同的行为:
su - nagios -s /usr/bin/sudo /etc/init.d/lighttpd start
nagios 守护进程具有 sudo 访问权限,定义如下/etc/sudoers.d/nagios
:
nagios ALL=(root) NOPASSWD: /etc/init.d/lighttpd *
我遗漏了什么?直接以 root 身份启动 lighttpd 与通过 sudo 以 nagios 用户身份启动 lighttpd 有什么区别?
答案1
nagios 在启动 lighttpd 时是否实际上使用 sudo ?
那么,它是运行“sudo /etc/init.d/lighttpd start”,还是运行“/etc/init.d/lighttpd start”。
当不从 sudo 运行时...它将不会以 root 身份运行,因此将不起作用。
如果有疑问...编辑 /etc/init.d/lighttpd 脚本,并让它在开始时打印其用户,例如:
id > /tmp/ligghtpd.start.$$
然后检查 /tmp/ligghtpd.start.* 文件。