在/ etc / sudoers中添加NOPASSWD不起作用
在14.04这里。 我连接到我的机器,将以下行添加到/etc/sudoers
:
myuser ALL=NOPASSWD: ALL
然后尝试运行:
sudo mkdir /etc/blah
…… 我被要求输入密码。 为什么?!?
我不希望在执行此操作时被要求输入密码。 请注意,当我运行ls -ltr /
我得到:
drwxr-xr-x 94 root root 4096 Jul 30 13:28 etc
但我不认为这很重要,因为我把自己定位为“sudoer”,对吧?
更重要的是,我需要做什么才能运行sudo mkdir /etc/blah
作为我当前的用户( myuser
)而不会被要求输入密码?
这是我的整个/etc/sudoers
文件:
# # 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 mail_badpass 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 fizzbuzz ALL=NOPASSWD: ALL chadmin ALL=NOPASSWD: ALL # 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
导致这种情况的是规则的顺序/顺序。 最后一条规则优先考虑。
为了解决您的问题,只需移动您的线,
fizzbuzz ALL=NOPASSWD: ALL chadmin ALL=NOPASSWD: ALL
从sudoers
文件到
sudo visudo -f /etc/sudoers.d/myOverrides
这比使用纯文本编辑器编辑sudoers
文件更好。 如果您不小心将错误插入文件,您可能无法再运行sudo
。 始终使用visudo
,以便检查语法并收到有关错误的警告!
您的指令不起作用,因为它被以下方式覆盖:
%admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALL
如果运行groups
命令,您应该看到您的用户属于这些组。
如果myuser在sudo组中,那么这些行的顺序将不提供无密码访问(如Florian Diesch所述),因为第3行会覆盖第1行。
myuser ALL=(www-data:www-data) NOPASSWD: ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
所以只需将这些行放入此顺序:
# Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL myuser ALL=(www-data:www-data) NOPASSWD: ALL
在myuser帐户下,使用sudo -l
检查myuser具有的权限。
如果多个条目匹配用户,则使用最后一个条目。 因此,如果fizzbuzz
和chadmin
是群组admin
或sudo
成员,他们仍然会被要求输入密码。
将两行放在#includedir
行之后的sudoers
文件的末尾。
理想情况下,如果要自定义可以通过sudo
运行的sudo
,则应在/etc/sudoers.d/
下的单独文件中进行这些更改,而不是直接编辑sudoers
文件。 您还应始终使用visudo
来编辑文件。 你永远不应该在ALL
命令上授予NOPASSWD
。
示例: sudo visudo -f /etc/sudoers.d/mynotriskycommand
插入您的行授予权限: myuser ALL= NOPASSWD: /bin/mkdir
然后保存并退出,如果您有任何语法错误, visudo
会发出警告。
您可以运行sudo -l
来查看用户已被授予的权限,如果出现任何特定于用户的NOPASSWD
命令,则在输出中的任何%groupyouarein ALL=(ALL) ALL
命令之前,系统将提示您输入密码。
如果您发现自己创建了大量这些sudoers.d文件,那么您可能希望按用户创建它们,以便更容易可视化。 请记住,文件名称和文件中的规则的排序非常重要,最后一个加载胜利,无论是比先前条目更多还是更少许可。
您可以使用前缀00-99或aa / bb / cc控制文件名排序,但请记住,如果您有任何没有数字前缀的文件,它们将在编号文件后加载,覆盖设置。 这是因为根据您的语言设置,“词法排序”shell首先使用排序数字,然后在以“升序”顺序排序时可以交错大写和小写。
尝试运行printf '%s\n' {{0..99},{AZ},{az}} | sort
printf '%s\n' {{0..99},{AZ},{az}} | sort
和printf '%s\n' {{0..99},{AZ},{az}} | LANG=C sort
printf '%s\n' {{0..99},{AZ},{az}} | LANG=C sort
以查看当前语言是否打印AaBbCc
等或ABC
然后abc
以确定要使用的最佳“最后”字母前缀。