我创建了一个名为 的用户intelmq
,该用户有权运行名为 的程序intelmqctl
。然后我创建了一个名为的用户apache
,我想以该用户的身份apache
执行。我将以下几行添加到文件中:intelmqctl
intelmq
sudoers
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 apache
为root
,它将更改为用户apache
,然后如果我执行该命令sudo -u intelmq /usr/bin/intelmqctl
,它会起作用,它会显示要执行的所有选项intelmqctl
。
但是,如果我sudo -iu apache
以apache
用户身份运行该命令,它将返回: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 的进程所有权来运行此可执行文件。