如何在没有密码提示的情况下在 sudoers 中授予组“service httpd graceful”权限?

如何在没有密码提示的情况下在 sudoers 中授予组“service httpd graceful”权限?

我目前正在尝试稍微锁定我的用户。我创建了一些用户:

  • www.foo
  • www.bar

和一个组:

  • apacheadmins

www.foo都是www.barapacheadmins组的成员。他们目前没有 sudo 访问权限,但我想授予他们以下 sudo 访问权限:

  • service httpd configcheck
  • service httpd restart
  • service httpd graceful

我在 sudoers 文件的最底部使用 visudo 添加了以下几行:

### Setting permissions for www.* users
Cmnd_Alias APACHECMDS = /sbin/service httpd configcheck, /sbin/service httpd graceful, /sbin/service httpd restart
%apacheusers ALL = NOPASSWD: APACHECMDS

我希望这些用户能够在没有密码提示的情况下使用这些命令,但他们只有密钥访问权限,并且目前没有分配密码。

每当我保存更改、以www.foo或身份打开新的 bash 会话时www.bar,我仍然会看到密码提示。

我玩了一下,如果我指定完整路径,我就可以让它工作,即:

sudo service httpd graceful不起作用。 sudo /sbin/service httpd graceful起作用。

我可以在不指定完整路径的情况下让它工作吗?

编辑: 我在用着:

[foo@bar~]$ uname -a
Linux bar 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
[foo@bar~]$ cat /etc/redhat-release
CentOS release 5.4 (Final)

答案1

问题是用户$PATH变量不包含/sbin,因此sudo实际上找不到命令。

$ sudo service acpid status
[sudo] password for mgorven: 
$ sudo /sbin/service acpid status
acpid (pid 3185) is running...
$ echo $PATH
/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
$ export PATH=$PATH:/sbin:/usr/sbin
$ sudo service acpid status
acpid (pid 3185) is running...

添加/sbin到用户中$PATH来解决这个问题。

相关内容