Security

為什麼重啟和關機需要root權限?

  • February 7, 2021

要從終端重新啟動或關閉 Linux,可以分別使用rebootpoweroff。但是,這兩個命令都需要 root 權限。為什麼會這樣?不要求它具有 root 權限會帶來什麼安全風險?GUI 為任何使用者提供了一種關閉或重新啟動的方式,那麼為什麼終端命令需要以 root 身份執行呢?

說到 GUI 中的選項,如果終端需要 root 權限來關閉或重新啟動 Linux 電腦,那麼 GUI 如何能夠提供一個不需要輸入密碼的選項?

警告:在這個答案結束時,您可能會比您想要的更多地了解 Linux

為什麼reboot以及poweroff需要 root 權限

GNU/Linux 作業系統是多使用者的,它的UNIX前輩也是如此。系統為共享資源,多個使用者可以同時使用。

過去,這通常發生在連接到小型機大型機的電腦終端上。

PDP-11

流行的 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 用於非常多樣化的環境——從大型機、伺服器和台式機到超級電腦、手機和微波爐。很難一直讓每個人都開心!:)

引用自:https://unix.stackexchange.com/questions/253767