一、Sudo和Root的區(qū)別
最小權限原則是一種信息和計算機安全概念,它認為授予程序和用戶執(zhí)行任務所需的最少或最低限度的權限。
以 root 用戶登錄后,輸入到終端的每一條命令都以系統(tǒng)較高權限運行,違反了最小權限原則。像 rm 這樣的簡單命令可用于刪除核心根目錄或文件,而不會在意外時提示用戶。例如,如果您嘗試使用以下命令刪除 /etc 之類的根目錄:
$ rm -rf /etc
當您以普通用戶身份登錄時,您將被拒絕許可。當以 root 身份登錄時,不會顯示任何提示,并且整個文件夾將被刪除 – 這很可能會破壞您的系統(tǒng),因為運行系統(tǒng)所需的特殊配置文件存儲在 /etc 目錄中。您也可能最終錯誤地格式化磁盤,并且系統(tǒng)不會提示您。
此缺陷還擴展到以 root 身份運行代碼或應用程序;應用程序中的一個小錯誤可能會刪除一些系統(tǒng)文件,因為該應用程序是在較高權限下運行的。
Sudo 提供細粒度的訪問控制。它僅向需要它的特定程序授予提升的權限。您知道哪個程序以提升的權限運行,而不是使用 root shell(以 root 權限運行每個命令)。
Sudo 也可以配置為以另一個用戶身份運行命令,指定允許哪些用戶和組使用 sudo 運行命令,或者通過編輯 sudoers 文件設置以 root 權限運行程序的超時。
因此,不建議使用 root shell 運行命令,因為您破壞系統(tǒng)的機會要高得多。如果您需要更高權限或 root 權限來運行命令,請使用 sudo 確保只有該命令以 root 權限運行。
延伸閱讀:
二、什么是 Sudo
sudo?(superuser do) 命令是一個命令行實用程序,它允許用戶以 root 或其他用戶身份執(zhí)行命令。它提供了一種有效的方式來授予某些用戶適當?shù)臋嘞抟允褂锰囟ǖ南到y(tǒng)命令或以 root 用戶身份運行腳本。
雖然有點類似于?su?命令,但?sudo?的不同之處在于它默認需要用戶的密碼進行身份驗證,而不是 su 需要的目標用戶的密碼。Sudo 也不會產生 root shell;相反,它以提升的權限運行程序或命令,不像 su,它產生一個 root shell。
使用 sudo,系統(tǒng)管理員可以執(zhí)行以下操作:
授予用戶或用戶組以提升或 root 權限運行某些命令的能力。查看每個使用 sudo 的用戶的用戶 ID 的日志。控制用戶可以在主機系統(tǒng)上使用什么命令。