每当我想要运行一些需要我做太多次的sudoer的东西时,我需要搜索/etc/sudoers的格式,再次提醒我写它的正确方法是什么。
现在,我在我的sudoers文件中看到了不同的写作风格,这是几个月来谷歌结果不同的结果。我还注意到,第二个示例(下面)似乎适用于XFCE,但不适用于肉桂(Gnome 3)。这可能是完全不相关的,但是我想一劳永逸地知道,sudoer行的正确语法是什么,给出的例子之间有什么区别呢?
redsandro ALL=NOPASSWD:/path/to/commandredsandro ALL=(ALL) NOPASSWD:/path/to/commandredsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command另外,ALL的S是做什么的?一个用户,一个命令,但我需要使用ALL关键字最多三次?我做错了吗?
当然,省略NOPASSWD:会让您在允许运行命令之前输入密码,但有一点混淆之处在于=和:的用法,因为行主题的最终命令可以由=、:或)加上,这会使语法混淆到类似的语义。
发布于 2012-04-02 15:42:53
它不仅仅是一个用户和一个命令:
redsandro host=(user:group) tag:commandshost指定此行的主机名。除非您在需要不同规则的不同主机之间共享asudoers文件,否则使用特殊值ALL,这意味着“所有主机”是一个不错的选择。user指定可以与-u选项一起使用哪些用户来运行命令。如果省略了这个选项,就不能使用-u选项。group指定可以与-g选项一起使用的组。如果省略它,就不能使用-g选项。user和group都将特殊值ALL理解为“所有用户/组”。
如果省略了整个(user:group),就不能使用-u和-g,而只能以根用户的身份运行命令。
tag允许您指定一些选项,如NOPASSWD因此,对于第一个示例,您可以以root用户身份运行该命令,但不能使用-u和-g作为任何其他用户或组来运行它。
对于示例2,您可以以根用户的身份运行该命令,也可以使用-u作为任何其他用户运行它。
使用3.您可以以根用户身份运行该命令,也可以使用-u或-g作为任何其他用户或组运行该命令。
发布于 2012-04-02 15:45:12
我们把这个拆开:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command
redsandro是我们给予许可的用户名。把%放在最前面,使它适用于一个群体。
一切都是这个规则的名称。Sudoers可以做的不仅仅是授予全局权限。这就是事情变得复杂的地方。
=不需要解释
ALL:ALL reads (who_to_run_it_as:what_group_to_run_it_as)。通过这种方式,您可以允许运行命令,但只能在特定用户或组的上下文中运行。
NOPASSWD:告诉它关闭密码提示。
/path/to/命令允许您指定特定命令path_to_commmand、another_command
需要记住的是,虽然sudo主要是由家庭用户使用来升级到根权限,但它可以并且被用来以更细粒度的方式控制对特定命令的访问。
https://askubuntu.com/questions/118204
复制相似问题