Unix

應該在伺服器管理中使用 sudo 還是只使用 su root?

  • December 30, 2009

哪種方法更好?

對於桌面使用,似乎 sudo 更好,因為:

  • 作為普通使用者,我可以擁有更一致的歷史記錄
  • 不需要記住兩個密碼,當我不經常做管理工作時尤其如此。
  • 無需在安裝時創建額外的 root 帳戶。

但是關於伺服器管理呢?

在伺服器中,您通常已經創建了一個 root 帳戶,並且您可能經常做管理工作。所以 sudo 的優勢似乎不再成立。

更重要的是,在大多數發行版中,在命令行上配置 su 很容易,只需將使用者添加到 wheel 組即可。(你甚至可以-G wheeluseradding 時通過。)因此配置 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 文件。

引用自:https://serverfault.com/questions/97429