我想允许特定的非 root 用户在 CentOS7 中启动/停止某些 systemd 服务。但到目前为止我尝试过的步骤都没有成功。这是我尝试过的。
我已在 sudoers 文件中添加了以下详细信息,其中 testudo 是一个用户组,并且已将几个用户添加到该组中。
## Manage specific systemd services
Cmnd_Alias SYSTEMD = /bin/systemctl start httpd, /bin/systemctl stop httpd, /bin/systemctl restart httpd
## Allows nfam group to run init-system commands using the SYSTEMD command alias
%testsudo ALL=NOPASSWD: SYSTEMD
组和添加的用户的详细信息:
# cat /etc/group | grep testsudo
testsudo:x:1009:userone,usertwo,userthree
现在,如果我尝试使用任何一个用户(testudo 组的一部分)启动服务,我会收到一条需要身份验证的消息。
[userone@msgdroid ~]$ systemctl start httpd
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Multiple identities can be used for authentication:
1. admin
2. priya
3. sekar
4. gokul
5. ravi
6. murali
Choose identity to authenticate as (1-6):
更新1:
我也用过须藤在命令前面,但它甚至不起作用。
$ sudo systemctl start httpd
[sudo] password for userone:
Sorry, user userone is not allowed to execute '/bin/systemctl start httpd' as root on webapp.
更新2:
- 只是更正一下,服务器只能通过 SSH 密钥访问,而不能通过密码访问。这会是一个问题吗?
答案1
我建议你尝试这个:
sudo systemctl start httpd
修改 sudoers 文件后,您必须注销然后再次登录(除非您这样做,否则您可能无法使用sudo
)。
您还可以编辑和替换以下内容:
%testsudo ALL=NOPASSWD: SYSTEMD
和
%testsudo ALL=(root) NOPASSWD: SYSTEMD
答案2
如果使用sudoers
,那么您需要使用sudo
,但您可以在脚本或别名中隐藏其使用。
我想知道问题是否在于您的用户尚未加入该组。将用户添加到新组,仅写入文件 ( /etc/groups
)。要激活它,您需要使用新组启动一个新进程。有两种简单的方法可以做到这一点: 1 注销并重新登录;跑步newgrp groupname
。这将在当前 shell 之上启动一个新 shell。当且仅当您是该组的成员时(根据文件/etc/groups
),它将被添加到新组中。