Security
為什麼重啟和關機需要root權限?
要從終端重新啟動或關閉 Linux,可以分別使用
reboot
和poweroff
。但是,這兩個命令都需要 root 權限。為什麼會這樣?不要求它具有 root 權限會帶來什麼安全風險?GUI 為任何使用者提供了一種關閉或重新啟動的方式,那麼為什麼終端命令需要以 root 身份執行呢?說到 GUI 中的選項,如果終端需要 root 權限來關閉或重新啟動 Linux 電腦,那麼 GUI 如何能夠提供一個不需要輸入密碼的選項?
警告:在這個答案結束時,您可能會比您想要的更多地了解 Linux
為什麼
reboot
以及poweroff
需要 root 權限GNU/Linux 作業系統是多使用者的,它的UNIX前輩也是如此。系統為共享資源,多個使用者可以同時使用。
流行的 PDP-11 小型電腦。按照今天的標準,有點大:)
在現代,這可以通過網路遠端(通常通過SSH)、瘦客戶端或多座位配置發生,其中有多個本地使用者的硬體連接到同一台電腦。
多座位配置。蒂亞戈·維尼亞蒂攝
實際上,可能有成百上千的使用者同時使用同一台電腦。如果任何使用者都可以關閉電腦並阻止其他人使用它,那將沒有多大意義。
不要求它具有 root 權限會帶來什麼安全風險?
在多使用者系統上,這可以防止有效的拒絕服務攻擊
GUI 為任何使用者提供了一種關閉或重新啟動的方式,那麼為什麼終端命令需要以 root 身份執行呢?
許多 Linux 發行版不提供 GUI。這樣做的桌面 Linux 發行版通常面向單使用者模式,因此從 GUI 允許這樣做是有意義的。
命令仍需要 root 權限的可能原因:
- 面向桌面的發行版的大多數使用者將使用 GUI,而不是命令行,因此不值得麻煩
- 與公認的 UNIX 約定一致
- (可以說是被誤導的)安全性,因為它可以防止天真的程序或腳本關閉系統電源
GUI如何能夠在沒有root權限的情況下顯示關機?
實際機制會因特定的桌面管理器 (GUI) 而異。一般來說,有幾種機制可用於此類任務:
- 以 root 身份執行 GUI 本身(希望在任何適當的實現上都不應該發生這種情況……)
- 設置
- 帶 NOPASSWD 的 sudo
- 將命令傳達給具有這些權限的另一個程序,通常使用D-Bus完成。在流行的 GUI 上,這通常由polkit管理。
總之
Linux 用於非常多樣化的環境——從大型機、伺服器和台式機到超級電腦、手機和微波爐。很難一直讓每個人都開心!:)