将组添加到 sudoers 无效

将组添加到 sudoers 无效

我尝试授予 www-data 组在 sudo 下访问某些命令的权限(例如重新启动 Apache),但失败了。我花了星期五的大部分时间来研究这个问题,并且查看了 20 个论坛帖子和与此问题相关的 SO/SF 主题,但失败了。

以下是我的 sudoers 文件(通过 visudo 编辑)。

#
# This file MUST be edited with the 'visudo' command as root
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.

Defaults        !requiretty
Defaults        env_reset
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# Allow members of www-data group access to apache
%www-data ALL= NOPASSWD: /usr/bin/service apache2 *

# See sudoers(5) for more information on "#include" directive

如果我以我的 jenkins 用户身份登录(它是 www-data 组的一部分,如下所示);

root@ip-REDACTED:~# groups jenkins
jenkins : www-data jenkins

我无法运行“sudo service apache2 restart”,如下所示。

jenkins@REDACTED:/root$ sudo service apache restart
[sudo] password for jenkins: 
jenkins is not allowed to run sudo on ip-REDACTED.  This incident will be reported.

Jenkins 不属于 sudo 组,但我不希望它属于 sudo 组,因为这样它就可以访问所有内容。此外,它似乎没有识别出 sudoers 中设置的 NOPASSWD 标志。我尝试了目前能想到的所有方法,但一无所获。值得一提的是,这是在 EC2 实例上运行的,EC2 对 sudoers 文件可以执行的操作是否设置了任何其他限制?

提前致谢。

答案1

尝试一个Cmnd_Alias定义:

Cmnd_Alias  APACHE_CMD = /usr/sbin/service apache2 restart
%www-data   ALL = (root)NOPASSWD: APACHE_CMD

确保可执行文件的路径service正确。

您还可以检查文件sudoers中的定义/etc/nsswitch.conf,并确保它包含files属性:

sudoers:  files ldap sss

相关内容