我目前正在尝试稍微锁定我的用户。我创建了一些用户:
www.foo
www.bar
和一个组:
apacheadmins
和www.foo
都是www.bar
该apacheadmins
组的成员。他们目前没有 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
来解决这个问题。