前言
通常,这是一个与Sudoers文件和sudo命令有关的相当复杂的问题。
注意:我已经在运行Ubuntu Desktop 13.04的专用计算机上进行了这些更改,我纯粹是出于学习目的。我了解启用NOPASSWD sudo具有巨大的安全风险。
题
最初,我对sudoers文件(/ etc / sudoers)的唯一更改是一行,这是一个用户规范,应该已使'nicholsonjf'能够使用sudo运行所有命令,而无需输入密码(请参阅以'nicholsonjf开头的行) '):
# 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
nicholsonjf 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
但是,这没有用,每次我以“ nicholsonjf”命令运行时,仍然会提示我输入密码。一旦我从sudo和admin组中删除了“ nicholsonjf”,我就只能以'nicholsonjf'的身份开始运行sudo命令。
谁能解释为什么这样有效?
是因为用户'nicholsonjf'继承了'admin'和'sudo'这两个组规范的sudo权限(在下面的sudoers文件中看到),它们被覆盖了'nicholsonjf'用户规范,因为它们在配置文件?