![无法给自己 chmod/chown 的 NOPASSWD 权限](https://linux22.com/image/73214/%E6%97%A0%E6%B3%95%E7%BB%99%E8%87%AA%E5%B7%B1%20chmod%2Fchown%20%E7%9A%84%20NOPASSWD%20%E6%9D%83%E9%99%90%20.png)
我正在尝试设置我的本地计算机(具有 Linux Mint 13 Maya),以便我可以使用 我的常规用户帐户chmod
处理任何文件。chown
max
继此页面之后, https://askubuntu.com/questions/159007/how-do-i-run-specific-sudo-commands-without-a-password
我做了以下事情:
#edit the /etc/sudoers file via `visudo`
sudo visudo
#in the file, added these lines:
Cmnd_Alias NOPASS_CMNDS = /bin/chmod, /bin/chown
max ALL=(ALL) NOPASSWD: NOPASS_CMNDS
然后保存了。 (我使用 chmod 和 chown 获得了位置which
)
所以,我的visudo
文件现在看起来像这样:
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults env_reset
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
Cmnd_Alias NOPASS_CMNDS = /bin/chmod, /bin/chown
max ALL=(ALL) NOPASSWD: NOPASS_CMNDS
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
这是输出sudo -l
$ sudo -l
Matching 'Defaults' entries for max on this host:
env_reset, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User max may run the following commands on this host:
(ALL) NOPASSWD: /bin/chmod, /bin/chown
(ALL : ALL) ALL
然后我打开一个新的 shell 选项卡并尝试访问sudo chmod
由不同用户和组拥有的文件,它要求我输入密码:
$ ls -l tmp/0000000001
-rw------- 1 www-data www-data 19245781 Sep 10 16:59 tmp/0000000001
$ sudo chmod +w tmp/0000000001
[sudo] password for max:
我在这里错过了什么吗?我不知道我是否做错了,或者误解了我真正想要改变的事情。
我是否需要重新启动或重新加载/重新启动某些内容才能看到更改?
答案1
这里的问题是该用户有两条规则:
(ALL) NOPASSWD: /bin/chmod, /bin/chown
(ALL : ALL) ALL
第二个来自 sudoers 阅读中的行
%sudo ALL=(ALL:ALL) ALL
Sudo 将使用从文件底部开始的第一个匹配规则 - 因此,当您需要为命令子集提供不同的选项时,您需要确保它们已列出以下更通用的线路。
换句话说,您需要确保该行
max ALL=(ALL) NOPASSWD: NOPASS_CMNDS
被放置后线
%sudo ALL=(ALL:ALL) ALL
在文件中。