1

所以,我添加了用户的 micronxd。我已经passwd'd micronxd。现在我想让 micronxd 成为 sudo 用户。

我正在尝试尽可能多地将这个过程打包到一个 shell 脚本中。如果可能的话,该解决方案是否可以涉及 sed'ing sudoers 文件?我想对那个可怕的小金块(sed)有一个非常强大的把握。

4

2 回答 2

5

sudoers文件实际上应该只用visudo(8).

也就是说,也许您应该在添加用户时添加micronxdwheel组中micronxd,(请参阅adduser(8) --add_extra_groups选项)然后将此行添加到sudoers(通过visudo(8):):

%wheel ALL=(ALL) ALL

现在,您使用主要组或辅助组创建的每个用户都会自动wheel获得sudo访问权限。您可能永远不需要sudoers再次编辑该文件。

(请注意,您可以轻松地将您想要的任何人添加到wheel组;vigr(8),找到该wheel组,并将其登录名附加到该行。使用逗号分隔用户名。)

于 2011-03-18T02:50:14.283 回答
0

好好好!我完全明白了。这可能有点矫枉过正,但我​​不确定 sudoers 文件在不同发行版中是否相似。

我在这里找到了关于 sed 保存缓冲区的文档:http: //anaturb.net/sed.htm

和这里 sed 的 x 命令: http ://www.kingcomputerservices.com/unix_101/hands_off_editing_with_sed_pa​​rt_2.htm

我想出了这个: sed -e '/^root/{h;}' -e 'x' -e 's/root/micronxd/' -e 'x' -e '/^root/G' -e 'wsudoers' sudoers

以下是6个步骤的细分:

1. '/^root/{h;}'

查找以root开头的未注释行,并用它替换保存缓冲区。

  • 常规 sed 缓冲区:[整个 sudoers 文件]
  • 保持缓冲区:root ALL=(ALL) ALL

2. 'X'

将保持缓冲区与常规的“待 sed'd”缓冲区交换。

  • 常规 sed 缓冲区:root ALL=(ALL) ALL
  • 保存缓冲区:[整个 sudoers 文件]

3. 's/root/micronxd/'

用 micronxd 替换 root

  • 常规 sed 缓冲区:micronxd ALL=(ALL) ALL
  • 保存缓冲区:[整个 sudoers 文件]

4. 'X'

再次将保持缓冲区与常规的“待 sed'd”缓冲区交换。

  • 常规 sed 缓冲区:[整个 sudoers 文件]
  • 保持缓冲区:micronxd ALL=(ALL) ALL

5. '/^根/G'

G 在匹配^root的行之后附加保持缓冲区。

  • 常规 sed 缓冲区(只是相关位):

##允许 root ALL=(ALL) ALL 在任何地方运行任何命令
root ALL=(ALL) ALL
micronxd ALL=(ALL) ALL

  • 保持缓冲区:micronxd ALL=(ALL) ALL

6. 'wsudoers'

将常规 sed 缓冲区写回 sudoers

我确信有更好的方法,但我正在尝试掌握 sed。另外,我不确定user MACHINE=COMMANDS ????是所有 linux 系统的语法,还是只是 fedora(这是我正在处理的)。

无论如何,我很高兴看到其他方式(尤其是更好的方式)。

于 2011-03-18T03:14:26.183 回答