Shell

sudoers 文件更改不起作用?

  • May 25, 2020

我在 Ubuntu 18.04LTS 中,我想更改 sudoers 文件以sudo shutdown -h now在不需要密碼的情況下執行(for my_username)。我採取的步驟是:

使用我的使用者my_username打開終端:

sudo visudo

我添加的行:

my_username ALL=(ALL) NOPASSWD: /sbin/shutdown

在第一部分(使用者和 ALL 之間)只有一個選項卡,其餘的是空格。使用者是它id在終端中出現的那個。之後,以防萬一我重新啟動系統,然後輸入,sudo shutdown -h now但它一直要求輸入密碼。

我做錯了什麼?

    • -編輯 - - -

好的,我不知道你添加行的順序很重要,所以我添加了我的完整文件(這是一個非常簡單的 sudoers 配置)。

#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
my_username ALL=(ALL) NOPASSWD: /sbin/shutdown
#includedir /etc/sudoers.d

這種方式對我來說非常有效。問題是我在根行之後添加了行。

在 sudoers 手冊頁(man 5 sudoers)中已經提到

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

因此,無論您的配置是否特定。

還要考慮你是否有sudoers組(比如wheel在基於 Red Hat 的發行版中)這條線

%wheel ALL=(ALL) ALL應該是之前NOPASSWD

配置

my_username ALL=(ALL) NOPASSWD: /sbin/shutdown

允許使用者在不提供密碼的情況下使用或不使用參數my_username執行,但他們必須使用,而不僅僅是(因為拾取的執行檔取決於)。/sbin/shutdown``/sbin/shutdown``shutdown``$PATH

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