我的 sudoers 文件:
cat /etc/sudoers
...
USERHERE ALL = NOPASSWD: /bin/cp /home/USERHERE/foo/in.csv /home/anotheruser/in.csv
...
看起来也不错:
USERHERE@notebook:~/foo$ sudo -l
Matching Defaults entries for USERHERE on this host:
env_reset, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User a may run the following commands on this host:
(root) NOPASSWD: /bin/cp /home/USERHERE/foo/in.csv /home/anotheruser/in.csv
(ALL : ALL) ALL
USERHERE@notebook:~/foo$
但是当我尝试时它会提示输入密码,为什么?
USERHERE@notebook:~$ sudo /bin/cp /home/USERHERE/foo/in.csv /home/anotheruser/in.csv
[sudo] password for USERHERE:
使用Ubuntu 12.04
答案1
使用 visudo 编辑 sudoers 文件,如下所示。
USERHERE ALL= (root) NOPASSWD: /bin/cp /home/USERHERE/foo/in.csv /home/anotheruser/in.csv
它不会要求输入密码。如果您需要更多信息,可以查看答案这里。
测试
我在我的机器上做了以下操作。首先以 root 用户身份发出visudo
命令来编辑sudoers
文件。然后,我添加了以下条目以允许用户拉梅什发出网络重启命令。
ramesh ALL = (root) NOPASSWD: /etc/init.d/network restart
之后,我su ramesh
以该用户身份登录。现在,我发出命令/etc/init.d/network restart
,它没有提示我输入密码。