"Admin"用户自动拥有sudo特权。

我使用adduser命令将一个名为"admin"的用户添加到我的Ubuntu 14.04LTS服务器上。
通常情况下,当我添加一个需要sudo权限的新用户时,我习惯于将该用户添加到/etc/sudoers文件中。但这次我没有这样做。根据shell中的输出,似乎在我创建之前并不存在'admin'用户。为什么会出现这种情况呢?

不要手动编辑sudoers文件,将它们添加到“admin”组中。 - Kaz Wolfe
1个回答

默认情况下,adduser 将每个新用户添加到与用户名相同的组中(如果该组尚不存在,则创建)。因此,如果您创建一个名为 admin 的用户,它将被添加到 admin 组中。 /etc/sudoers 包含以下行:
%admin ALL=(ALL) ALL

这意味着组中的所有成员“admin”都被允许使用“sudo”,这对于您的“admin”用户也是如此。

顺便提一下:这对于Polkit管理员权限也是适用的。 - muru
8在我看来,这符合“错误”或“安全问题”的定义。为什么使用一个特殊的字母序列作为用户名就能给你超能力呢? - Federico Poloni
1@FedericoPoloni 我同意你的观点,尽管有人试图利用这一点,但他必须调用adduser命令,这意味着他已经拥有管理员权限... 不过,我认为还是值得提交一个错误报告。 - nico
7@FedericoPoloni 不是bug。系统会将用户添加到与其名称相同的组中。Joe会被放入名为Joe的组中,admin也会被放入名为admin的组中。但是,admin是一个系统组,它是默认允许使用sudo的组。此外,您可以指定组,以便admin用户不会被放入admin组中。最后,使用用户名admin会带来安全问题。我曾经遭受过SSH暴力破解攻击,攻击者依赖于我使用admin作为用户名。 - Kaz Wolfe
3@Whaaaaaat,不知为何,在你的帖子末尾看到这个用户名让我对你说的一切都产生了质疑 :) - trpt4him
@trpt4him 而且,这就是我选择它的原因。 - Kaz Wolfe
5我认为,鉴于一个用户只能属于一个群组的政策,预期的行为(至少对我来说)应该是如果群组名称已存在(就像用户名称存在一样),则报错退出。我投票支持修复这个错误,或者至少解决这种意外行为。 - Rmano
"管理员"组可能是为了允许由Novell、Linux和Unix服务器混合组成的局域网上的"管理员"用户而添加的,当时认为这对于局域网上的管理员用户来说是一件好事! - Ken Mollerup