一個用戶有多種 sudo 類型

一個用戶有多種 sudo 類型

我遇到一種情況,我希望主管理員用戶(所有人都使用 sudo)將無密碼 sudo 作為一個命令的另一個用戶。據我所知, /etc/sudoers 中應該給出以下內容:

ramo   ALL=(otherUser) NOPASSWD: /usr/bin/command
ramo   ALL=(ALL) ALL

但這兩行似乎衝突,或者第二行覆蓋了第一行。關於如何實現這一目標有什麼想法嗎?

乾杯

拉莫

編輯:事實證明我在指定使用者時稍微誤解了 sudo 的工作原理。我的印像是,如果您有 ALL=(otherUser) 那麼您不需要“sudo -u otherUser”,而只需 sudo 即可。事實並非如此。

答案1

順序很重要,其行為在 sudoers(5) 手冊頁中進行了描述:

當多個條目與一個使用者相符時,它們將按順序套用。如果有多個符合項,則使用最後一個符合項(不一定是最具體的符合項)。

根據您的原始規則,「(ALL) ALL」是最後一個符合項,因此 sudo 會提示輸入密碼。

以下 /etc/sudoers 有效:

ramo   ALL=(ALL) ALL
ramo   ALL=(otherUser) NOPASSWD: /bin/whoami

例如:

$ sudo -k /bin/whoami
[sudo] password for ramo: 
root
$ sudo -k -u otherUser /bin/whoami
otherUser
$ sudo -k -u otherUser /bin/true
[sudo] password for ramo:
$ sudo -k /bin/true
[sudo] password for ramo:

在 Fedora 19 上使用 sudo-1.8.6p7-1 進行測試

答案2

我認為你可以用「!」來否定。嘗試第二行

ramo ALL=(ALL) !/usr/bin/command

相關內容