现在 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
从左到右,这句话的意思是:
ALL
用户...- 在
ALL
主机上... - 可以以一组
ALL
用户中的任何一个身份运行以下命令,默认为 root... - 哪些命令是
!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/*
.两者同时使用会造成混乱。