Linux:如何允许普通用户“su - anotherUser”?

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 用户身份登录时,我无法以用户 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

相关内容