為什麼 sudoers 不是由 UID 定義的?

為什麼 sudoers 不是由 UID 定義的?

Linux 中的登入資訊與 UID 相關聯。但是,當我打開 sudoers 檔案時,sudoers 是由使用者名稱而不是 UID 定義的。

為什麼要使用使用者名稱而不是 UID?
sudoers 檔案usermod -l運行時會自動更改嗎?

片段:

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

答案1

遵循一些手冊[1,2] 我可以給你這些答案:

  1. 可以用UID來指示用戶

    來自ubuntu 的 sudoers wiki我們可以讀到:

    您可以透過在註釋前加上 # 前綴來插入註釋,但這也可用於在文件的某些部分指定 uid(當註釋後面跟著數字時)。

    後來在Runas 別名部分報道了一個例子:

    # UID 0 is normally used for root  
    # Note the hash (#) on the following line indicates a uid, not a comment.  
    Runas_Alias ROOT = #0
    
  2. 當您這樣做時,usermod -l您不應該在 sudoers 中傳播更改。
    確實從usermod 的手冊頁,比BSD一,我們可以讀到

    -l, --登入 NEW_LOGIN
    使用者名稱將從 LOGIN 變更為 NEW_LOGIN。其他沒有改變。
    特別是,使用者的主目錄名稱可能應該手動更改以反映新的登入名稱。

    -l如果您僅指定參數,這似乎仍然意味著需要手動處理 sudoers 中的修改。可能您必須刪除舊用戶名並將使用者新增至 sudo 群組

    sudo usermod -a -G sudo hduser
    

    確實如此,事情發生在該用戶2008 年使用 Debian Sid 系統:

    我曾經使用 XXX 作為使用者名稱登入我的 sid 筆記型電腦,XXX 位於 sudoers 檔案中。今天我將其更改為 YYY 使用

    sudo usermod -l YYY XXX

    我什麼也沒做。

    現在我可以使用 YYY 登錄,但無法使用 root 密碼 su 到 root。另外「YYY」不在 sudoers 檔案中,所以現在我無法編輯 /etc/sudoers 以包含 YYY

最後為什麼,也許您應該只能從以下位置獲得明確的答案托德·米勒誰在 1991 年完成了最後一個(獲勝的)sudo 分支,或者可能來自 Bob Coggeshall 或 Cliff Spencer(如果它來自 1980 年)[7]。

參考

相關內容