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