以另一个用户身份执行命令

以另一个用户身份执行命令

我创建了一个名为 的用户intelmq,该用户有权运行名为 的程序intelmqctl。然后我创建了一个名为的用户apache,我想以该用户的身份apache执行。我将以下几行添加到文件中:intelmqctlintelmqsudoers

Defaults:apache !requiretty
apache ALL=(intelmq) NOPASSWD: /usr/bin/intelmqctl

但是,每次我尝试以用户身份运行以下命令时,apache都会返回以下内容:

命令:sudo -u apache sudo -u intelmq /usr/bin/intelmqctl --type json stop abusech-ip-parser

输出:

Sorry, user apache is not allowed to execute '/bin/sudo -u intelmq /usr/bin/intelmqctl --type json stop abusech-ip-parser' as apache on localhost.localdomain.

我使用的是 CentOS 7。

以下是我安装的步骤intelmqctl以及问题本身的更好解释,也许我在安装过程中失败了:https://github.com/certtools/intelmq/issues/981

如果我尝试执行sudo -iu apacheroot,它将更改为用户apache,然后如果我执行该命令sudo -u intelmq /usr/bin/intelmqctl,它会起作用,它会显示要执行的所有选项intelmqctl

但是,如果我sudo -iu apacheapache用户身份运行该命令,它将返回:Sorry, user apache is not allowed to execute '/bin/bash' as apache on localhost.localdomain.

答案1

您可以向该二进制文件添加 setuid 权限并将所有权更改为 intelmq。

chmod u+s /usr/bin/intelmqctl
chown intelmq /usr/bin/intelmqctl

然后您可以使用 intelmq 的进程所有权来运行此可执行文件。

相关内容