到目前为止,我已经找到了四种将用户添加到 sudoers 组的不同方法,但并非所有方法都适用于所有系统。为什么有这么多不同的实现?哪个最好?标准是什么(即在大多数系统中工作)?
不同的实现:
- 将用户添加到“wheel”组。
- 将用户添加到“sudo”组。
- 编辑文件 /etc/sudoers
- 使用 visudo 编辑文件 /etc/sudoers
答案1
有两种(主要)方法可以授权用户通过 sudo 以 root 身份运行命令:
- 声明“Alice 可以以 root 身份运行命令”;
- 声明“Alice 是系统管理员”并且“系统管理员可以以 root 身份运行命令”。
声明“Alice 是系统管理员”的方法是使她成为 sysadmins 组的成员,但 sysadmins 组没有标准名称(也没有任何必须存在 sysadmins 组的义务)。一些传统的 Unix 系统有一个名为wheel
,但往往处于wheel组只是成为root的先决条件,用户还必须知道root密码并运行su
(特别是BSD就是这样使用的)。某些发行版(例如 Ubuntu 和 Debian)在其默认配置中包含一个名为“该组的成员可以以 root 身份运行命令”的组sudo
和规则。sudo
如果/etc/sudoers
(或 中的文件/etc/sudoers.d
)包含类似 的行,那么您可以通过将用户添加到组 ( )%sudo ALL=(ALL:ALL) ALL
来使用户成为 sudoer 。这个名字并不神奇,你只需要匹配 中的条目即可。sudo
adduser alice sudo
sudo
/etc/sudoers
切勿直接编辑/etc/sudoers
(或 下的文件/etc/sudoers.d
):如果出现语法错误,您将无法获得 root 访问权限。始终用于visudo
编辑该文件。要选择运行的编辑器visudo
,请设置VISUAL
环境变量(或EDITOR
,只要VISUAL
未设置)。在多用户计算机上,使用visudo
具有额外的优点,即它可以在两个管理员同时编辑文件的情况下进行锁定。
答案2
adduser username sudo
对我有用——但是,我使用 Debian,它有一个sudoers
默认授予sudo
组中每个人 sudo 访问权限的文件。
答案3
因为Ubuntu
我添加了<somefile>
以下/etc/sudoers.d/
行:
<user> ALL=(ALL:ALL) ALL
使用命令:
visudo -f /etc/sudoers.d/<somefile>
建议这样做,因为它使/etc/suoders
文件保持不变,从而避免升级之间的冲突(以及所需的后续手动解决方案)。看:为什么是/etc/sodoers.d/
答案4
方法 2 和 4 几乎适用于所有 Linux。甚至不要尝试在工作系统上使用 3!它可能会损坏系统。方法 1 可以,但不是必须的。
为什么应该使用 visudo 而不是手动编辑 /etc/sudoers?
一旦我获得 root 访问权限,我就使用 visudo 来修复 sudoers 文件。为什么是维苏多?因为那是您应该使用的程序。是的,我有点生气,因为破坏这个服务器的人应该更清楚。 Visudo 是一个可爱的小程序,它在保存 sudoers 文件之前检查它的语法,这样,如果您做了一些极其愚蠢的事情,您就会在它成为问题之前就知道它,并阻止您以 root 身份重新进入系统。
http://lickthesalt.com/2009/07/06/fail-why-you-should-always-use-visudo/