Linux中國

在 Linux 上使用 sudo 命令的 5 個理由

以下是切換到 Linux sudo 命令的五個安全原因。下載 sudo 參考手冊獲取更多技巧。

在傳統的 Unix 和類 Unix 系統上,新系統中存在的第一個同時也是唯一的用戶是 root。使用 root 賬戶登錄並創建「普通」用戶。在初始化之後,你應該以普通用戶身份登錄。

以普通用戶身份使用系統是一種自我施加的限制,可以防止愚蠢的錯誤。例如,作為普通用戶,你不能刪除定義網路介面的配置文件或意外覆蓋用戶和組列表。作為普通用戶,你無權訪問這些重要文件,所以你無法犯這些錯誤。作為系統的實際所有者,你始終可以通過 su 命令切換為超級用戶(root)並做你想做的任何事情,但對於日常工作,你應該使用普通賬戶。

幾十年來,su 運行良好,但隨後出現了 sudo 命令。

對於日常使用超級用戶的人來說,sudo 命令乍一看似乎是多餘的。在某些方面,它感覺很像 su 命令。例如:

$ su root
<輸入密碼>
# dnf install -y cowsay

sudo 做同樣的事情:

$ sudo dnf install -y cowsay
<輸入密碼>

它們的作用幾乎完全相同。但是大多數發行版推薦使用 sudo 而不是 su,甚至大多數發行版已經完全取消了 root 賬戶(LCTT 譯註:不是取消,而是默認禁止使用 root 用戶進行登錄、運行命令等操作。root 依然是 0 號用戶,依然擁有大部分系統文件和在後台運行大多數服務)。讓 Linux 變得愚蠢是一個陰謀嗎?

事實並非如此。sudo 使 Linux 更加靈活和可配置,並且沒有損失功能,此外還有 幾個顯著的優點

為什麼在 Linux 上 sudo 比 root 更好?

以下是你應該使用 sudo 替換 su 的五個原因。

1. root 是被攻擊確認的對象

我使用 防火牆fail2banSSH 密鑰 的常用組合來防止一些針對伺服器的不必要訪問。在我理解 sudo 的價值之前,我對日誌中的暴力破解感到恐懼。自動嘗試以 root 身份登錄是最常見的情況,自然這是有充分理由的。

有一定入侵常識的攻擊者應該知道,在廣泛使用 sudo 之前,基本上每個 Unix 和 Linux 都有一個 root 賬戶。這樣攻擊者就會少一種猜測。因為登錄名總是正確的,只要它是 root 就行,所以攻擊者只需要一個有效的密碼。

刪除 root 賬戶可提供大量保護。如果沒有 root,伺服器就沒有確認的登錄賬戶。攻擊者必須猜測登錄名以及密碼。這不是兩次猜測,而是兩個必須同時正確的猜測。(LCTT 譯註:此處是誤導,root 用戶不可刪除,否則系統將會出現問題。另外,雖然 root 可以改名,但是也最好不要這樣做,因為很多程序內部硬編碼了 root 用戶名。可以禁用 root 用戶,給它一個不能登錄的密碼。)

2. root 是最終的攻擊媒介

在訪問失敗日誌中經常可以見到 root 用戶,因為它是最強大的用戶。如果你要設置一個腳本強行進入他人的伺服器,為什麼要浪費時間嘗試以受限的普通用戶進入呢?只有最強大的用戶才有意義。

root 既是唯一已知的用戶名,又是最強大的用戶賬戶。因此,root 基本上使嘗試暴力破解其他任何東西變得毫無意義。

3. 可選擇的許可權

su 命令要麼全有要麼全沒有。如果你有 su root 的密碼,你就可以變成超級用戶。如果你沒有 su 的密碼,那麼你就沒有任何管理員許可權。這個模型的問題在於,系統管理員必須在將 root 密鑰移交或保留密鑰和對系統的所有權之間做出選擇。這並不總是你想要的,有時候你只是想授權而已

例如,假設你想授予用戶以 root 身份運行特定應用程序的許可權,但你不想為用戶提供 root 密碼。通過編輯 sudo 配置,你可以允許指定用戶,或屬於指定 Unix 組的任何用戶運行特定命令。sudo 命令需要用戶的現有密碼,而不是你的密碼,當然也不是 root 密碼。

4.超時

使用 sudo 運行命令後,通過身份驗證的用戶的許可權會提升 5 分鐘。在此期間,他們可以運行任何管理員授權的命令。

5 分鐘後,認證緩存被清空,下次使用 sudo 再次提示輸入密碼。超時可防止用戶意外執行某些操作(例如,搜索 shell 歷史記錄時不小心或按多了向上箭頭)。如果一個用戶離開辦公桌而沒有鎖定計算機屏幕,它還可以確保另一個用戶不能運行這些命令。

5. 日誌記錄

Shell 歷史功能可以作為一個用戶所做事情的日誌。如果你需要了解系統發生了什麼,你可以(理論上,取決於 shell 歷史記錄的配置方式)使用 su 切換到其他人的賬戶,查看他們的 shell 歷史記錄,也可以了解用戶執行了哪些命令。

但是,如果你需要審計 10 或 100 名用戶的行為,你可能會注意到此方法無法擴展。Shell 歷史記錄的輪轉速度很快,默認為 1000 條,並且可以通過在任何命令前加上空格來輕鬆繞過它們。

當你需要管理任務的日誌時,sudo 提供了一個完整的 日誌記錄和警報子系統,因此你可以在一個特定位置查看活動,甚至在發生重大事件時獲得警報。

學習 sudo 其他功能

除了本文列舉的一些功能,sudo 命令還有很多已有的或正在開發中的新功能。因為 sudo 通常是你配置一次然後就忘記的東西,或者只在新管理員加入團隊時才配置的東西,所以很難記住它的細微差別。

下載 sudo 參考手冊,在你最需要的時候把它當作一個有用的指導書。

sudo 參考手冊

via: https://opensource.com/article/22/5/use-sudo-linux

作者:Seth Kenlon 選題:lkxed 譯者:MjSeven 校對:turbokernel

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。