如何在 debian wheezy 上正确配置 sudoers 文件?

如何在 debian wheezy 上正确配置 sudoers 文件?

我看过很多博客文章说,这样做就足够了

aptitude install sudo
su root
adduser USERNAME sudo

但这只能保护aptitude,换句话说:

  • aptitude install sendmail会要求输入密码,你需要 sudo运行aptitude

  • apt-get install sendmail不会询问密码,无需sudo权限

  • 如果您编辑受保护的文件,例如其中的文件,etc则不会要求输入密码,无需任何sudo权限

  • 您可以运行和停止诸如 之类的服务apache,它不会要求输入密码,不需要sudo权限

如何解决这个问题?这是我的 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:$

# Host alias specification

# User alias specification

# Cmnd alias specification

这是以下的输出sudo -l

Matching Defaults entries for root on this host:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User root may run the following commands on this host:
    (ALL : ALL) ALL
    (ALL : ALL) ALL

答案1

您尚未添加任何 sudo 规则,因此您无法使用 sudo 执行任何操作。

该命令adduser USERNAME sudo将指定用户添加到名为 的组中sudo。必须存在具有该名称的组;addgroup sudo如果没有则创建它。将用户添加到组后,用户必须注销并重新登录才能使组成员身份生效。

sudo不是一个特殊的组名。这是一个约定,允许被调用组中的用户sudo通过该实用程序以 root 身份运行命令sudo。这需要文件中包含以下行sudoers

%sudo ALL = (ALL) ALL

运行visudo来编辑 sudoers 文件,切勿直接编辑。

我不知道你为什么相信“这只会保护能力”。资质方面并没有什么特别的。一旦您授权用户以 root 身份运行命令,该用户就可以运行sudo aptitude …sudo apt-get …sudo service …sudoedit来编辑需要 root 权限才能编辑的文件。位于 sudoers 文件中并不会直接更改用户的权限,它的作用是允许您sudo以 root 身份运行命令。仅当您通过 运行命令时,命令才以 root 身份运行sudo。某些程序可能会自动执行此操作,尤其是 GUI 程序,其中用户界面运行时无需特殊权限,并且仅后端以 root 身份运行,但以 root 身份执行的命令始终由sudo.

答案2

什么可能发生的事情是: sudo 正在缓存您的密码。因此,在您的系统上正确完成 sudo 的执行后,您必须输入 sudo 的密码第一的命令,然后它会被缓存一段时间。如果发生这种情况并且您运行该序列

sudo aptitude install sendmail
sudo apt-get install sendmail

然后,您必须在第一个命令上提供密码,但在第二个命令上不需要提供密码(至少在您仍在超时范围内时)。这可能感觉就像它只保护第一个命令,但不保护第二个命令。如果没有进一步的信息(完整的 shell 记录),就没有办法告诉......

答案3

如果您遵循上述答案,那么您就走在正确的道路上。至少在我的 Debian Jessie 中,我在路径 /sbin 中对命令的 /usr/bin 做了软链接。例如:/sbin/ifup,我把一个软链接(ln -s)到它的/usr/bin,我就可以使用它了。

另一件重要的事情是像这样放置 NOPASSWD:

User_Alias NET = goviedo
Cmnd_Alias ETH = /sbin/ifup
NET ALL = NOPASSWD:ETH

相关内容