sudoers-请求简单说明


24

每当我想运行某些需要我sudoer太多次的东西时,都需要使用google进行格式设置,/etc/sudoers以再次提醒我编写它的正确方式是什么。

现在,我在sudoers文件中看到了不同的写作风格,这是几个月来Google业绩不同的结果。我还注意到,下面的第二个示例似乎在XFCE中有效,但在Cinnamon(Gnome 3)中无效。这可能是完全无关的,但是尽管如此,我还是想一劳永逸地知道,sudoer行的正确语法是什么,给定示例之间的区别是什么?

  1. redsandro ALL=NOPASSWD:/path/to/command
  2. redsandro ALL=(ALL) NOPASSWD:/path/to/command
  3. redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

另外,所有ALL的用途是什么?一个用户,一个命令,但是我ALL最多需要使用3次关键字吗?我做错了吗?

当然,忽略NOPASSWD:让你输入你的密码,您被允许运行命令之前,但混乱的一个点的使用=,并:为最终的命令是该行的主题可以通过预先考虑=:,或者),类似语义的语法混乱。


3
我也对sudoers语法感到非常沮丧。阅读手册页更加令人沮丧:它描述了所谓的简洁准确的EBNF语言,示例内容详尽无遗。因此,对于在此文件中找到这么多线程,我并不感到惊讶。
m-ric

1
谢谢你 自从几年前我遇到一个sudoers文件以来,一直想问这个问题:-)
vahidg

Answers:


35

它不仅仅是一个用户和一个命令:


redsandro host=(user:group) tag:commands
  • host指定此行对其有效的主机名。除非要在需要不同规则的不同主机之间共享asudoers文件,否则使用特殊值ALL意味着“所有主机”是一个不错的选择。

  • user指定可以与哪些用户一起使用-u选项来运行命令。如果您忽略此-u选项,则不能使用该选项。

  • group指定可以与-g选项一起使用的组。如果您忽略它,则不能使用该-g选项。

无论usergroup了解特殊价值ALL为“所有用户/组”

如果省略整个(user:group)内容,则无法使用-u-g而只能以root用户身份运行命令。

  • tag 让您指定一些选项,例如 NOPASSWD

因此,在第一个示例中,您可以以root用户身份运行命令,但不能使用该命令-u-g以任何其他用户或组身份运行它。

在示例2中,您可以以root -u用户身份运行该命令,也可以以任何其他用户身份运行该命令。

使用3.,您可以以root用户身份运行命令,也可以以-u-g以任何其他用户或组身份运行命令。


这正是我想要的。我已经接受了您的回答,并感谢您的努力。
Redsandro

1
最后的想法,我可以使用127.0.0.1还是localhost作为host琐碎的附加安全性使用?
Redsandro

5
联机帮助页上说:“注意sudo仅检查实际的网络接口;这意味着IP地址127.0.0.1(localhost)将永远不匹配。同样,只有当主机名“ localhost”是实际的主机名时,该主机名才匹配,通常仅在非网络系统中才是如此。
Florian Diesch

1
谢谢。我没有主机名,特别是因为我希望能够将sudoersfile复制到多台机器上。ALL它是。
Redsandro'4

9

让我们分开:
redsandro ALL=(ALL:ALL) NOPASSWD:/path/to/command

redsandro是我们允许的用户名。将%放在最前面以使其适用于组。

ALL是此规则的名称。Sudoers不仅可以授予全局权限,还可以做更多的事情。那就是它变得复杂的地方。

=无需解释

ALL:ALL读为(who_to_run_it_as:what_group_to_run_it_as)。这样,您可以允许运行命令,但只能在特定用户或组的上下文中。

NOPASSWD:告诉它关闭密码提示。

/ path / to / command可让您指定特定的命令path_to_commmand和another_command

要记住的是,虽然sudo主要由家庭用户用来升级为root特权,但它可以并且可以用来以更精细的方式控制对特定命令的访问。


1
感谢您的补充%, another_command注意。现在,我了解了%wheel基于Fedora的发行版中的内容。
Redsandro
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.