如何取消 sudoers 中的规则?

如何取消 sudoers 中的规则?

现在 sudoers 支持子文件夹/etc/sudoers.d,我们可以在其中设置个性化规则。

我想使用它并避免更改主/etc/sudoers文件。

因此,在文件中/etc/sudoers.d/99_adjusts我想取消设置主要用户规范规则:

ALL   ALL=(ALL) ALL

我试图避免在 上对其进行评论/etc/sudoers
我想要一些可以撤销之前设置的规则的东西:

!ALL   ALL=(ALL) ALL

但不幸的是上面的方法不起作用;!查看手册页我不知道是否有一些技巧可以做到这一点。

答案1

我想要一些可以撤销之前设置的规则的东西:

!ALL ALL=(ALL) ALL

但不幸的是上面的方法不起作用

当然不是。!ALL开头的意思是“向任何用户授予 sudo 权限”,因此该规则不执行任何操作。该行后面的内容并不重要,它不能匹配任何内容。

可以/etc/sudoers通过覆盖/etc/sudoers.d,如sudoers手册页

当多个条目与一个用户匹配时,它们将按顺序应用。如果有多个匹配项,则使用最后一个匹配项(不一定是最具体的匹配项)。

由于目录内容是通过通常放置在文件末尾的指令sudoers.d拉入顶级文件的,因此添加规则将覆盖顶级文件中等效匹配的任何规则。sudoers#includedir/etc/sudoers.d/*

覆盖相关规则的正确语法是:

ALL ALL = (ALL) !ALL

从左到右,这句话的意思是:

  1. ALL用户...
  2. ALL主机上...
  3. 可以以一组ALL用户中的任何一个身份运行以下命令,默认为 root...
  4. 哪些命令是!ALL

由于最后一位表示“无命令”,因此它完全覆盖了 main 中的“授予每个人运行所有命令的所有权利”规则sudoers file

然后,您需要在/etc/sudoers此之后从主文件中添加您想要的任何规则,以恢复其权限授予。这是从文件中选择性复制和粘贴的简单问题/etc/sudoers。请记住:最后一场比赛获胜。

警告:如果您不将上述行之后的任何内容放入文件中,您将删除 sudo 权限全部用户。在root用户被禁用的系统上,该su命令不起作用,您可能会因为弄乱这个而无意中将自己锁定在计算机之外,从而面临很高的风险。我建议您root在另一个终端中测试时保持一个单独的终端打开。


这已在 macOS 10.12 系统上进行了验证,但它应该适用于#includedir主文件底部具有该指令的任何系统sudoers

答案2

AFAIK,无法删除 sudo 配置文件中的 sudo 规则。

您应该删除主配置文件/etc/sudoers并仅在/etc/sudoers.d/*.两者同时使用会造成混乱。

相关内容