Unix
應該在伺服器管理中使用 sudo 還是只使用 su root?
哪種方法更好?
對於桌面使用,似乎 sudo 更好,因為:
- 作為普通使用者,我可以擁有更一致的歷史記錄
- 不需要記住兩個密碼,當我不經常做管理工作時尤其如此。
- 無需在安裝時創建額外的 root 帳戶。
但是關於伺服器管理呢?
在伺服器中,您通常已經創建了一個 root 帳戶,並且您可能經常做管理工作。所以 sudo 的優勢似乎不再成立。
更重要的是,在大多數發行版中,在命令行上配置 su 很容易,只需將使用者添加到 wheel 組即可。(你甚至可以
-G wheel
在useradd
ing 時通過。)因此配置 su 可以很容易地自動化到 shell 腳本中。但是對於 sudo?您需要先添加使用者,然後以
visudo
互動方式執行。這很糟糕,因為您無法將其自動化到 shell 腳本中。(嗯,你可以。例如,
echo '%wheel ALL=(ALL) ALL' >> /tmp/sudoers.tmp cp /etc/sudoers /etc/sudoers.old visudo -c -f /tmp/sudoers.tmp && mv /tmp/sudoers.tmp /etc/sudoers
但至少沒那麼容易。)
那麼你的意見是什麼?對於伺服器環境,您更喜歡 sudo 還是 su root?
在伺服器上肯定需要 root 帳戶,但我更喜歡授予 sudo 權限,尤其是當機器上有多個使用者時,這有幾個原因:
- 我不僅使用 sudo 授予所有命令的所有權限,而且還授予特定使用者作為特定命令的特定權限。
- 通過將使用者分配到功能組,我可以在 sudoers 中管理他們對這些組的權限,而不是單獨管理使用者。
- sudo 訪問預設記錄在 auth.log 中,包括哪些使用者在什麼時間使用了 sudo。
- sudo 允許使用一個文件管理多台機器的配置。
- 每個使用者都有自己的密碼,因此當使用者離開時無需更改root密碼。
至於使用腳本管理它,新版本的 sudo 支持包含,但我更喜歡使用 puppet 並設置連接 sudoers 內容的類。
Puppet 也可以與Augeas關聯以管理您的 sudoers 文件。