允许非 root 用户管理 systemd 服务不起作用

Par*_*pal 6 linux sudo systemd

我想允许特定的非 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
Run Code Online (Sandbox Code Playgroud)

组和添加的用户的详细信息:

# cat /etc/group | grep testsudo
testsudo:x:1009:userone,usertwo,userthree
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试使用任何一个用户(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):
Run Code Online (Sandbox Code Playgroud)

更新1:

我还在命令前面使用了sudo,但它甚至不起作用。

$ sudo systemctl start httpd
[sudo] password for userone:
Sorry, user userone is not allowed to execute '/bin/systemctl start httpd' as root on webapp.
Run Code Online (Sandbox Code Playgroud)

更新2:

  • 只是更正一下,服务器只能通过 SSH 密钥访问,而不能通过密码访问。这会是一个问题吗?

lau*_*hub 2

我建议你尝试这个:

sudo systemctl start httpd
Run Code Online (Sandbox Code Playgroud)

sudo修改 sudoers 文件后,您必须注销然后再次登录(除非您这样做,否则您可能无法使用)。

您还可以编辑和替换以下内容:

%testsudo ALL=NOPASSWD: SYSTEMD
Run Code Online (Sandbox Code Playgroud)

%testsudo ALL=(root) NOPASSWD: SYSTEMD
Run Code Online (Sandbox Code Playgroud)

  • `%testsudo ALL=(root) NOPASSWD: SYSTEMD` 翻译为英语:使用此 sudoers 文件的所有主机上的“testsudo”组成员都可以以 root 身份执行之前定义的任何命令,而无需输入密码CmndAlias SYSTEMD` 行。 (2认同)
  • “testsudo”一词前面的百分号表示它是一个**组**而不是用户。原来的海报说需要运行命令的用户已经被添加到“testsudo”组中。 (2认同)