我编写了一个 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 用户身份登录时,我无法以用户 peeradmin 身份运行任何命令,除非被要求输入密码:
[nagios@hadoop-nn1 ~]$ su - peeradmin -c "ls"
Password:
我做错了什么,我怎样才能允许用户 nagios 以用户 peeradmin 身份运行命令?
提前致谢,
答案1
尽管正确,但我认为上述答案有点不完整。
为了以 peeradmin 用户身份执行这两项操作touch
,文件ls
中的规则/etc/sudoers
应如下所示:
nagios ALL=(peeradmin) NOPASSWD: /bin/ls, /bin/touch
如果您想运行更多命令,请添加这些命令(带有完整路径),并用逗号分隔。
完成后,只需以 nagios 用户身份使用以下命令:
sudo -u peeradmin touch /path/to/the/mount
或者
sudo -u peeradmin ls
答案2
这是因为它是sudo
配置,而您无法运行sudo
。
sudo su - peeradmin -c "ls"
可能会有用。
但实际上,如果只是运行命令,应该更多地考虑直接使用 sudo。例如
sudo -u peeradmin ls
您需要一个别名:
nagios ALL=(peeradmin) NOPASSWD: /bin/ls