我正在尝试允许用户使用 sudo 来管理自定义 systemctl 服务,但这似乎失败了,我不知道原因。
[root@testvm sudoers.d]# ll
total 16
-r--r-----. 1 root root 334 Oct 9 15:42 20_appgroup
-r--r-----. 1 root root 104 Sep 17 11:24 98_admins
‘appgroup’包含此内容;
[root@testvm sudoers.d]# cat 20_appgroup
%appgroup ALL= /usr/bin/systemctl restart test.service,
/usr/bin/systemctl start test.service, /usr/bin/systemctl stop
test.service, /usr/bin/systemctl status test.service
我已仔细检查该用户是否是应用程序组的成员,但是当该用户运行时sudo systemctl 启动测试服务这会导致错误;
Sorry, user tester is not allowed to execute '/usr/bin/systemctl start test' as root on testvm.
您认为可能存在什么问题吗?
答案1
调试 sudo 问题:
- 以相关用户身份运行
sudo -l
以显示分配给该用户的权利。 - 确保这些权限与您希望允许的命令相对应,您的配置中允许的不包含参数的
命令将被允许使用任何参数运行, 而允许在其规范中包含参数的命令将只能与那些精确的参数一起使用,不多也不少。/etc/sudoers
/etc/sudoers.d/*
- 如果缺少基于组的权限,请检查以
id <username>
获取用户所属的所有组的列表。 - 如果包含文件
/etc/sudoers.d/
没有被加载:/etc/sudoers
要包含这些代码片段,需要配置主配置文件以使用#includedir /etc/sudoers.d
指令加载这些附加配置部分。
前导 # 是没有评论但作为该指令的一部分。- 中的文件
/etc/sudoers.d/
名称不应以 结尾~
或包含.
字符。 - 中的文件
/etc/sudoers.d/
应该为模式 0440 并由 root:root 拥有。
答案2
这就是它对我的作用
tomcat ALL=(ALL) NOPASSWD:/bin/systemctl stop tomcat