Linux 下面有兩個概念可能大家接觸的比較多,一個是 sudo 命令,還有一個是 root 賬戶。Sudo命令可以以最高權限執行命令,而 root 賬戶下所有命令都有最高權限,也就是相當于所有命令都默認加了 sudo。
那么sudo 和 root 的區別到底是什么呢,為什么我們建議使用 sudo 而不是直接使用 root 賬戶?在本教程中,您將了解 root 訪問、sudo 命令、如何使用 sudo 運行命令以及 sudo 訪問和 root 之間的區別。
什么是 root?
root 是指 Linux 等類 Unix 系統中的超級用戶帳戶。它是用于系統管理的系統上具有最高訪問權限的特權帳戶。此根/超級用戶帳戶的用戶標識符 (UID) 為零,無論帳戶名稱如何。
root 用戶擁有整個系統的完全權限(root 特權)。它可以做諸如修改系統的核心部分、升級系統、更改系統配置以及啟動、停止和重新啟動所有正在運行的系統服務之類的事情。
以 root 身份登錄(使用 su -)時,終端命令提示符符號從
$echo'Youareinanormalshell'
變成
#echo'Thisisarootshell'
在某些系統(如 Ubuntu)上,root 用戶默認被鎖定。(備注:搬瓦工并不會鎖定,但是騰訊云默認會鎖定)。
什么是 Sudo?
sudo(superuser do) 命令是一個命令行實用程序,它允許用戶以 root 或其他用戶身份執行命令。它提供了一種有效的方式來授予某些用戶適當的權限以使用特定的系統命令或以 root 用戶身份運行腳本。
雖然有點類似于 su 命令,但sudo的不同之處在于它默認需要用戶的密碼進行身份驗證,而不是 su 需要的目標用戶的密碼。Sudo 也不會產生 root shell;相反,它以提升的權限運行程序或命令,不像 su,它產生一個 root shell。
使用 sudo,系統管理員可以執行以下操作:
授予用戶或用戶組以提升或 root 權限運行某些命令的能力。
查看每個使用 sudo 的用戶的用戶 ID 的日志。
控制用戶可以在主機系統上使用什么命令。
Sudo 會記錄在 /var/log/auth.log 文件中執行的所有命令和參數的日志,可以在出現故障時進行分析。
sudoers 文件
sudo 使用默認的 sudoers 安全策略,并保留一個特殊的配置文件 /etc/sudoers。該文件可用于控制訪問權限和密碼提示超時。
注意:您必須具有提升的權限才能查看 sudoers 文件
打開 /etc/sudoers 文件;它應該是這樣的:
#ThisfileMUSTbeeditedwiththe'visudo'commandasroot. # #Pleaseconsideraddinglocalcontentin/etc/sudoers.d/insteadof #directlymodifyingthisfile. # #Seethemanpagefordetailsonhowtowriteasudoersfile. # Defaultsenv_reset Defaultsmail_badpass Defaultssecure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/ sbin:/bin" #Hostaliasspecification #Useraliasspecification #Cmndaliasspecification #Userprivilegespecification rootALL=(ALL:ALL)ALL #Allowmembersofgroupsudotoexecuteanycommand %sudoALL=(ALL:ALL)ALL #Seesudoers(5)formoreinformationon"@include"directives: @includedir/etc/sudoers.d
其中這行:
rootALL=(ALL:ALL)ALL
意味著 root 用戶擁有無限的權限并且能夠在系統上運行任何命令。
%sudoALL=(ALL:ALL)ALL
允許組 sudo 的所有成員執行任何命令。
注意:sudoers 文件中的 ‘%’ 代表一個組,而不是注釋。
從 /etc/sudoers 文件的第一行可以看出:
#ThisfileMUSTbeeditedwiththe'visudo'commandasroot
不要嘗試直接編輯 sudoers 文件。使用具有 root 權限的 visudo 命令。
使用 sudo 運行命令很簡單,只需要在命令前面加上 sudo 即可:
$sudocommand
一般來說會提示輸入密碼,輸入密碼后回車即可。
$sudocommand [sudo]passwordforuser:
Sudo 對比 Root
最小權限原則是一種信息和計算機安全概念,它認為授予程序和用戶執行任務所需的最少或最低限度的權限。
以 root 用戶登錄后,輸入到終端的每一條命令都以系統最高權限運行,違反了最小權限原則。像 rm 這樣的簡單命令可用于刪除核心根目錄或文件,而不會在意外時提示用戶。例如,如果您嘗試使用以下命令刪除 /etc 之類的根目錄:
$rm-rf/etc
當您以普通用戶身份登錄時,您將被拒絕許可。當以 root 身份登錄時,不會顯示任何提示,并且整個文件夾將被刪除 – 這很可能會破壞您的系統,因為運行系統所需的特殊配置文件存儲在 /etc 目錄中。您也可能最終錯誤地格式化磁盤,并且系統不會提示您。
此缺陷還擴展到以 root 身份運行代碼或應用程序;應用程序中的一個小錯誤可能會刪除一些系統文件,因為該應用程序是在最高權限下運行的。
Sudo 提供細粒度的訪問控制。它僅向需要它的特定程序授予提升的權限。您知道哪個程序以提升的權限運行,而不是使用 root shell(以 root 權限運行每個命令)。
Sudo 也可以配置為以另一個用戶身份運行命令,指定允許哪些用戶和組使用 sudo 運行命令,或者通過編輯 sudoers 文件設置以 root 權限運行程序的超時。
因此,不建議使用 root shell 運行命令,因為您破壞系統的機會要高得多。如果您需要更高權限或 root 權限來運行命令,請使用 sudo 確保只有該命令以 root 權限運行。
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11293瀏覽量
209339 -
文件
+關注
關注
1文章
565瀏覽量
24729 -
命令
+關注
關注
5文章
683瀏覽量
22011 -
root
+關注
關注
1文章
86瀏覽量
21389
原文標題:Linux 中 root 與 sudo 的用法與區別,居然這么多人搞不清楚!
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論