我写了一个Nagios检查脚本,用来检查用户peeradmin是否能够在服务器上的某个安装文件中触摸某个文件。
Nagios的用户是:nagios。
我编辑了/etc/sudoers
并添加了这些行,但都没有工作:
nagios ALL=NOPASSWD: /bin/su - peeradmin -c /bin/touch nagios ALL=(peeradmin) NOPASSWD: /bin/su nagios ALL=(peeradmin) NOPASSWD: /bin/su - peeradmin
但仍然,作为nagios用户login时,我无法运行任何命令作为用户peeradmin而不被要求input密码:
[nagios@hadoop-nn1 ~]$ su - peeradmin -c "ls" Password:
我在做什么错了,我怎么能让用户nagios作为用户peeradmin运行命令?
提前致谢,
虽然是正确的,但我觉得上面的答案有点不完整。
为了同时执行touch
和ls
作为peeradmin用户, /etc/sudoers
文件中的规则应该如下所示:
nagios ALL=(peeradmin) NOPASSWD: /bin/ls, /bin/touch
如果你想运行更多的命令,那么添加那些用逗号隔开的命令(完整path)。
一旦你这样做,只需使用以下命令作为nagios用户:
sudo -u peeradmin touch /path/to/the/mount
要么
sudo -u peeradmin ls
那是因为它是sudo
configuration,而且你不运行sudo
。
sudo su - peeradmin -c "ls"
可能工作。
但是实际上,如果只是运行命令,应该直接使用sudo来思考。 例如
sudo -u peeradmin ls
对于你需要一个别名:
nagios ALL=(peeradmin) NOPASSWD: /bin/ls