Linux:如何让普通用户“su – anotherUser”?

我写了一个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运行命令?

提前致谢,

虽然是正确的,但我觉得上面的答案有点不完整。

为了同时执行touchls作为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

那是因为它是sudoconfiguration,而且你不运行sudo

sudo su - peeradmin -c "ls"可能工作。

但是实际上,如果只是运行命令,应该直接使用sudo来思考。 例如

 sudo -u peeradmin ls 

对于你需要一个别名:

 nagios ALL=(peeradmin) NOPASSWD: /bin/ls