
我目前正在嘗試稍微鎖定我的用戶。我創建了一些用戶:
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
來解決這個問題。