/etc/sudoers
在和添加用户 有什么区别usermod -a -G sudo
? 应使用哪种方法授予 sudo?
答案1
如果可以避免,永远不要向个人用户授予 sudo 权限。始终向团体然后将用户添加到该组。
对于基于 ubuntu 的服务器,无需向 中添加行/etc/sudoers
,只需将配置文件片段添加到 即可/etc/sudoers.d
。这样更灵活、更容易理解、在升级时更具弹性,并且更适合由配置管理系统管理的系统。
注意:切勿/etc/sudoers
直接编辑。相反,请使用visudo
,它将对您的编辑执行语法检查,防止您使用无效语法破坏 sudo 配置。
答案2
我刚刚发现了这个小秘密……看来你需要特别小心使用-G
Ubuntu 中的选项,特别是组合-g
选项。所以:
- 使用
usermod -aG
将用户添加到组。 - 然后正如@EEAA 所建议的那样,使用以下命令将组添加到 /etc/sudoers 文件
$ sudo
visudo
命令(自动调用具有语法检查功能的特权编辑器)。
以下是有关 Ubuntu 上的选项的信息-aG
,取自此处http://ubuntuforums.org/showthread.php?t=1240477:
“我正在读Wiley《Linux 命令行和脚本圣经》- 他们说 usermod -G 会将一个组“附加”到您正在修改的任何用户帐户。我发现这在 Ubuntu 中是错误的,不知道这是否只是在其他发行版中有所不同,或者是书中的拼写错误。它会将您从您所属的所有其他组中移除,除了您的默认用户组(由 -g 选项修改)。我设法将自己从管理员组中移除,并且无法再使用 sudo 执行任何操作。感谢上帝有恢复模式……'
正确的选项是用户修改-aG。 学过的知识...
答案3
你没有告诉我们你的环境有多大,但如果有多台机器,你可能还需要考虑sudo
使用 LDAP 进行配置这是在本地编辑 sudoers 的替代方法(通过visudo
或使用/etc/sudoers.d
fragments 方法)。
LDAP 配置是一种经过充分测试的方法,可确保多台计算机具有相同的sudo
配置,并提供一个良好的统一环境(具有对重要授权机制的集中管理)。如果您已经在环境中使用 LDAP(或 AD)进行身份验证/授权,那么您可以利用现有的基础架构(如果没有,您应该认真考虑一下 - 集中化有很多好处)。
人们在其他答案中已经说过的有关创建授权组的所有内容仍然有效 - 随着规模扩大,向组授予特权并管理组成员资格比管理单个用户的权限更容易。