如何在沒有 passwd 提示的情況下在 sudoers 中授予群組「服務 httpd 優雅」權限?

如何在沒有 passwd 提示的情況下在 sudoers 中授予群組「服務 httpd 優雅」權限?

我目前正在嘗試稍微鎖定我的用戶。我創建了一些用戶:

  • www.foo
  • www.bar

和一組:

  • apacheadmins

www.foo、 和都是www.bar該組的成員apacheadmins。他們目前沒有 sudo 訪問權限,但我想授予他們 sudo 訪問權限:

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

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

### 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來解決這個問題。

相關內容