添加用户的正确 sudoers 语法是什么?

添加用户的正确 sudoers 语法是什么?

根据/etc/sudoers(Fedora 13)中的评论:

## Syntax:
##
##    user  MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.

我的两个相关问题:

  1. ALL=(ALL) ALL以下行的含义是什么:

    root  ALL=(ALL)   ALL
    
  2. 我已经测试了这两行,但我无法弄清楚它们在功能上有何不同:

    superadm    ALL=(ALL)    ALL
    superadm    ALL=ALL
    

我已阅读手册,但语法规范很难遵循。我已经推断出该(ALL) ALL部分是命令和标签规范,但我仍然无法理解它。

答案1

笔记:我正在回答1.,自伊格纳西奥已经回答了 2.

在以下sudo条目中:

superadm  ALL=(ALL)   ALL

有四个字段:

  • 第一个指定将被授予某些命令权限的用户。
  • 第二种很少使用。这是此 sudo 条目将对其生效的主机名列表。在标准设置中,只有一台主机相关(localhost),因此该字段通常保留为ALL.
  • 第四superadm字段是能够以提升的权限运行的命令列表。ALL表示所有命令。否则使用逗号分隔的命令列表。
  • 第三个字段((…)可选的)指定用户superadm将能够以哪些用户(和组)身份运行以下命令。ALL意味着他们可以选择任何东西(不受限制)。如果省略该字段,则与 含义相同(root)

例子:

alan   ALL = (root, bin : operator, system) /bin/ls, /bin/kill

此处,alan允许运行两个命令/bin/ls/bin/killas root(或bin),可能具有附加operatorsystem组权限。

因此可以选择以用户身份alan运行并具有组权限,如下所示:lsbinoperator

sudo -u bin -g operator /bin/ls /whatever/directory

如果-u省略,则与 相同-u root。如果-g省略,则不会授予其他组权限。

答案2

sudoers(5)手册页来看,描述部分,Runas_Spec小节:

sudo第一个 Runas_List 指示哪些用户可以通过的选项来运行该命令-u

...

如果未指定 Runas_Spec,则可以运行该命令,root并且不能指定任何组。

root因此,当尝试运行命令 as 时,即不使用-uwith时,没有功能差异sudo。当尝试以其他用户身份运行命令时,差异很重要;后者会阻止这种情况发生,但前者会允许这种情况发生。

相关内容