在 Linux 上使用 sudo 命令的 5 個理由 | Linux 中國
以下是切換到 Linux sudo 命令的五個安全原因。下載 sudo 參考手冊獲取更多技巧。
- 來源: https:// linux.cn/article-14634- 1.html
- 作者:Seth Kenlon
- 譯者:MjSeven
(本文字數:2768,閱讀時長大約:4 分鐘)
以下是切換到 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 是被攻擊確認的物件
我使用防火牆、fail2ban 和SSH 金鑰 的常用組合來防止一些針對伺服器的不必要訪問。在我理解 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 參考手冊,在你最需要的時候把它當作一個有用的指導書。
- 用這些開源工具在 Linux 上編輯 PDF 檔案 | Linux 中國
- 前端工程師應該掌握的linux命令
- 拒絕蠻力,高效檢視Linux日誌檔案!
- 如何在 Kubernetes 中執行不受信任的容器
- 這回,不用為Linux命令發愁了吧
- Linux核心基礎-程序使用者棧與核心棧
- 拒絕蠻力,高效檢視Linux日誌檔案!
- 你會使用 Linux 編輯器 Vim 嗎?
- 從深度到統信,從桌面到根社群
- 乾貨|如何讓同事不再吐槽自己的git管理技術
- 聊聊go中的逃逸分析
- 用 Curtail GUI 應用輕鬆壓縮 Linux 中的影象 | Linux 中國
- Docker Compose:搭建開發環境的好方式
- 圖解|Linux記憶體背後的那些神祕往事
- 如何構建自己的可引導 Linux Live CD
- Linux 之父發話:Rust 即將出現在 Linux 核心中
- Linux課堂篇3_Linux目錄結構、快捷鍵、常用基礎命令
- 一種跳板機的實現思路
- 在 Linux 上使用 WineZGUI 執行 Windows 應用和遊戲 | Linux 中國
- Linus Torvalds:Rust有可能被合併到Linux 5.20核心中去