添加 NOPASSWD 流浪用户的最佳方法?

Kra*_*tos 7 server vagrant

与流浪用户一起添加 NOPASSWD 的更好方法是什么?

方式一:

groupadd -r admin
usermod -a -G admin vagrant
cp /etc/sudoers /etc/sudoers.orig
sed -i -e '/Defaults\s\+env_reset/a Defaults\texempt_group=admin' /etc/sudoers
sed -i -e 's/%admin ALL=(ALL) ALL/%admin ALL=NOPASSWD:ALL/g' /etc/sudoers 
Run Code Online (Sandbox Code Playgroud)

方式二:

# Set up sudo
echo %vagrant ALL=NOPASSWD:ALL > /etc/sudoers.d/vagrant
chmod 0440 /etc/sudoers.d/vagrant
# Setup sudo to allow no-password sudo for "sudo"
usermod -a -G sudo vagrant
Run Code Online (Sandbox Code Playgroud)

或者也许有更好的?

Eli*_*gan 10

编辑sudoers文件的注意事项

手动编辑您正在创建或修改的任何文件有时比使用echo ... >或编辑更可取——sed尤其是sed除非您非常精通它。这是因为它更清楚地向您显示了更改的影响,并且因为对于您实际上并未创建的文件(如sudoers“方式 1”),在文本编辑器中打开该文件会向您显示该文件的其他内容可能是相关的。在对当前配置进行更改之前,您通常应该了解当前配置,并且阅读您正在编辑的任何配置文件有时会对此有所帮助。

然而,更重要的是,在修复问题之前,编辑中的一个小错误/etc/sudoers任何文件都/etc/sudoers.dsudo完全拒绝工作。

对于桌面 Ubuntu 系统但不是大多数服务器系统,有一个相对容易的修复方法;否则,您可能必须启动到恢复模式或从 Live CD/DVD/USB 启动,以解决被锁定而无法执行任何管理操作的问题。

无论哪种方式,您都应该使用visudo编辑/etc/sudoers/etc/sudoers.d.

对于/etc/sudoerssudo visudo

对于/etc/sudoers.d名为的文件vagrantsudo visudo /etc/sudoers.d/vagrant

visudo 您是否编辑了一个临时文件,一旦退出,请检查您的语法以确保在将临时文件复制到实际配置文件之前它是正确的。

由于这种机制,如果您想使用终端单行而不是文本编辑器,您应该能够使用visudosed管道相关的或类似于管道的某种机制(例如tee),sudoers以与您类似的方式安全地编辑文件在“方式1”和“方式2”中使用过。

也许其他人会发布详细说明如何做到这一点的答案;如果没有,那么下次我可以使用适合此类测试的机器时,我可能会尝试弄清楚并通过示例扩展此答案。或者,使用sedecho安全地创建/修改sudoerssudoers.d配置可能被视为单独问题的主题。这是特别的情况下,如果你的主要兴趣在这里是能否给予NOPASSWD sudo的-根电源直接或通过组成员。

通过组成员与每个用户授予 sudo 到 root 的权力

“方式1”和“方式2”之间的主要区别是:

  • “方式 1”使用户成为管理员,并赋予管理员以 root 身份运行命令的能力,sudo 而不会被提示输入密码。
  • “方式 2”专门将这种能力授予一个用户。

除非您希望所有管理员都能够在没有密码的情况下sudo-to-root (默认情况下,需要输入密码),否则“方式 2”更可取。

但是,您希望能够以 root 身份运行任意命令的任何用户应该是管理员!(这将让他们使用,pkexec并且如果您或您的同事试图找出所有用户都具有执行系统管理任务的能力,则可以避免混淆。)

因此,最好的办法可能是添加vagrant为管理员,并分别NOPASSWD能力,vagrant特别是(并且不是在一般的管理员)。