Permissions

試圖了解 sudoers 文件中“modernNeo ALL=(ALL:ALL) ALL”和“modernNeo ALL=(ALL) ALL”之間的區別

  • October 6, 2021

sudoers文件中,您可以具有以下任一行

modernNeo ALL=(ALL:ALL) ALL
modernNeo ALL=(ALL) ALL

我在這裡查看了以下答案以了解這一點

問題 1

如果我從上述答案中正確理解:

  • (ALL:ALL)意味著您可以以任何使用者和任何組的身份執行該命令
  • (ALL)意味著您可以以任何使用者身份執行命令,但您的組保持不變$$ it remains your own group $$- 無論您在第三個條目中使用sudowith時成為的使用者如何?ALL

問題2

但隨著(ALL:ALL)

  • 如果您可以將它作為任何組執行,那麼 sudo 如何決定您執行命令的組,就好像您沒有在命令行上使用 指定它一樣-g
  • 它是否首先嘗試將其作為您自己的組執行,然後在找到允許您執行命令的組之前瀏覽您電腦上所有組的列表?
  • 它從哪裡獲得組列表以及該列表中組的順序是什麼?
  • root或者當您未指定您想要成為的使用者和/或組的偏好時,它是否只是恢復為用於使用者和/或組?如果是這樣,為什麼(ALL:ALL)當你可以做的時候(root:root)呢?

問題 3

此外,在這個 Ubuntu 論壇文章中,關於以下幾行

%admin ALL=(ALL) ALL

%sudo   ALL=(ALL:ALL) ALL  

他們說

admin 組中的使用者可能會成為 root。sudo 組中的使用者只能使用 sudo 命令。例如,他們不能sudo su

(ALL:ALL)(user:group)sudo使用。可以在執行時使用-u和指定它。如果您不指定任何內容,它將執行為,這是預設設置。無論如何,這就是大多數人最終使用它的方式。-g``sudo``root:root

這讓我很困惑;他們說如果您在執行命令時可以加入任何組,那麼您就無法成為root?

像這樣的一行:

smith ALL=(ALL) ALL

將允許使用者 smith 使用 sudo 在任何電腦(第一個 ALL)上執行,就像任何使用者(第二個 ALL,括號內的那個)任何命令(最後一個 ALL)一樣。sudo 將允許此命令:

smith@site ~ $ sudo -u root -g root bash

但這不會:

smith@site ~ $ sudo -u root -g smith bash

因為尚未聲明任何組的權限。

然而,這:

smith ALL=(ALL:ALL) ALL

將允許執行此命令(假設使用者tom和組sawyer存在):

smith@site ~ $ sudo -u tom -g sawyer bash
tom@site ~ $ id
uid=1023(tom) gid=1087(sawyer) groups=1047(tom),1092(sawyer)

話說回來:

第一季度

(ALL:ALL) 表示您可以以任何使用者和任何組的身份執行該命令

是的

(ALL) 表示您可以以任何使用者身份執行命令……

是的

……但你的組保持不變

$$ it remains your own group $$

不,唯一允許的組是root.

第二季度

sudo 如何決定您執行命令的組,就好像您沒有在命令行上使用 指定它一樣-g

它預設為root.

它是否首先嘗試將其作為您自己的組執行,然後在找到允許您執行命令的組之前瀏覽您電腦上所有組的列表?

不。

它從哪裡獲得組列表以及該列表中組的順序是什麼?

沒有可使用的列表。如上所述,它在使用時簡單地下降到預設值,或者在使用時下降到命名root 組。*user:*ALL``*user:group*

簡單的規則,簡單的動作。

root或者當您未指定您想要成為的使用者和/或組的偏好時,它是否只是恢復為用於使用者和/或組?

是的。

如果是這樣,為什麼 (ALL:ALL) 可以做 (root:root) ?

因為有了(ALL:ALL)你可以做:

sudo -u tom -g sawyer id

(root:root)你只能這樣做:

sudo -u root -g root id

沒有別的(使用者和組)。

第三季度

對於這些行:

> > > %admin ALL=(ALL) ALL > %sudo ALL=(ALL:ALL) ALL > > >

> > admin 組中的使用者可能會成為 root。 > > >

是的,admin組 (%) 中的使用者可以成為任何使用者(包括 root)(因為(ALL)),但只有root組。

> > sudo 組中的使用者只能使用 sudo 命令。 > > >

這是不正確的。組中的使用者sudo(%) 可以執行任何命令(最後一個ALL)。

sudo組 (%)中的使用者可以成為任何使用者((ALL:)部分) 任何組((:ALL)部分)並且可以執行任何命令(最後一個ALL)(不僅是 sudo,這是特別不正確的)。

> > 例如,他們不能sudo su > > >

不,他們可以做sudo suor sudo ls or 。sudo *anycommand*

> > (ALL:ALL)(user:group)sudo使用。可以在執行時使用-u和指定它。-g``sudo > > >

他們在這裡是正確的。該命令sudo -u tom -g sawyer ls正確有效。

> > 如果您不指定任何內容,它將執行為root:root,這是預設設置。 > > >

在這裡也是正確的。該命令sudo ls將使用root:root憑據(即權力/特權)執行。

> > 無論如何,這就是大多數人最終使用它的方式。 > > >

正確,最常用的sudo命令沒有指定使用者或組。所以,它是*“最常用的”*(預設root:root)。

這讓我很困惑……他們說如果你可以在執行命令時加入任何組,……

是的,他們聲明使用(ALL:ALL)sudo命令可以獲取任何使用者或組。

和:

……那你就不能成為root?

不,這種解釋是不正確的。

  • with (ALL:ALL) ALLsudo 允許成為任何組的任何使用者執行任何命令。甚至是根。
  • 使用(ALL) ALLsudo 失去設置組的能力,但仍然可以設置使用者並執行任何命令(sudo su -允許)。

引用自:https://unix.stackexchange.com/questions/490835