試圖了解 sudoers 文件中“modernNeo ALL=(ALL:ALL) ALL”和“modernNeo ALL=(ALL) ALL”之間的區別
在
sudoers
文件中,您可以具有以下任一行modernNeo ALL=(ALL:ALL) ALL modernNeo ALL=(ALL) ALL
我在這裡查看了以下答案以了解這一點
- sudoers 文件,為使用者啟用 NOPASSWD,所有命令
root ALL=(ALL:ALL) ALL
和 和有什麼不一樣root ALL=(ALL) ALL
?- (ALL:ALL) 對 sudoers 的影響?
- sudoers 中的“ALL ALL=(ALL) ALL”是什麼意思?
問題 1
如果我從上述答案中正確理解:
(ALL:ALL)
意味著您可以以任何使用者和任何組的身份執行該命令(ALL)
意味著您可以以任何使用者身份執行命令,但您的組保持不變$$ it remains your own group $$- 無論您在第三個條目中使用sudo
with時成為的使用者如何?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 su
orsudo 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) ALL
sudo 允許成為任何組的任何使用者執行任何命令。甚至是根。- 使用
(ALL) ALL
sudo 失去設置組的能力,但仍然可以設置使用者並執行任何命令(sudo su -
允許)。