Linux 下面有兩個(gè)概念可能大家接觸的比較多,一個(gè)是 sudo 命令,還有一個(gè)是 root 賬戶。Sudo命令可以以最高權(quán)限執(zhí)行命令,而 root 賬戶下所有命令都有最高權(quán)限,也就是相當(dāng)于所有命令都默認(rèn)加了 sudo。
那么sudo 和 root 的區(qū)別到底是什么呢,為什么我們建議使用 sudo 而不是直接使用 root 賬戶?在本教程中,您將了解 root 訪問、sudo 命令、如何使用 sudo 運(yùn)行命令以及 sudo 訪問和 root 之間的區(qū)別。
什么是 root?
root 是指 Linux 等類 Unix 系統(tǒng)中的超級(jí)用戶帳戶。它是用于系統(tǒng)管理的系統(tǒng)上具有最高訪問權(quán)限的特權(quán)帳戶。此根/超級(jí)用戶帳戶的用戶標(biāo)識(shí)符 (UID) 為零,無(wú)論帳戶名稱如何。
root 用戶擁有整個(gè)系統(tǒng)的完全權(quán)限(root 特權(quán))。它可以做諸如修改系統(tǒng)的核心部分、升級(jí)系統(tǒng)、更改系統(tǒng)配置以及啟動(dòng)、停止和重新啟動(dòng)所有正在運(yùn)行的系統(tǒng)服務(wù)之類的事情。
以 root 身份登錄(使用 su -)時(shí),終端命令提示符符號(hào)從
$echo'Youareinanormalshell'
變成
#echo'Thisisarootshell'
在某些系統(tǒng)(如 Ubuntu)上,root 用戶默認(rèn)被鎖定。(備注:搬瓦工并不會(huì)鎖定,但是騰訊云默認(rèn)會(huì)鎖定)。
什么是 Sudo?
sudo(superuser do) 命令是一個(gè)命令行實(shí)用程序,它允許用戶以 root 或其他用戶身份執(zhí)行命令。它提供了一種有效的方式來(lái)授予某些用戶適當(dāng)?shù)臋?quán)限以使用特定的系統(tǒng)命令或以 root 用戶身份運(yùn)行腳本。
雖然有點(diǎn)類似于 su 命令,但sudo的不同之處在于它默認(rèn)需要用戶的密碼進(jìn)行身份驗(yàn)證,而不是 su 需要的目標(biāo)用戶的密碼。Sudo 也不會(huì)產(chǎn)生 root shell;相反,它以提升的權(quán)限運(yùn)行程序或命令,不像 su,它產(chǎn)生一個(gè) root shell。
使用 sudo,系統(tǒng)管理員可以執(zhí)行以下操作:
授予用戶或用戶組以提升或 root 權(quán)限運(yùn)行某些命令的能力。
查看每個(gè)使用 sudo 的用戶的用戶 ID 的日志。
控制用戶可以在主機(jī)系統(tǒng)上使用什么命令。
Sudo 會(huì)記錄在 /var/log/auth.log 文件中執(zhí)行的所有命令和參數(shù)的日志,可以在出現(xiàn)故障時(shí)進(jìn)行分析。
sudoers 文件
sudo 使用默認(rèn)的 sudoers 安全策略,并保留一個(gè)特殊的配置文件 /etc/sudoers。該文件可用于控制訪問權(quán)限和密碼提示超時(shí)。
注意:您必須具有提升的權(quán)限才能查看 sudoers 文件
打開 /etc/sudoers 文件;它應(yīng)該是這樣的:
#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 用戶擁有無(wú)限的權(quán)限并且能夠在系統(tǒng)上運(yùn)行任何命令。
%sudoALL=(ALL:ALL)ALL
允許組 sudo 的所有成員執(zhí)行任何命令。
注意:sudoers 文件中的 ‘%’ 代表一個(gè)組,而不是注釋。
從 /etc/sudoers 文件的第一行可以看出:
#ThisfileMUSTbeeditedwiththe'visudo'commandasroot
不要嘗試直接編輯 sudoers 文件。使用具有 root 權(quán)限的 visudo 命令。
使用 sudo 運(yùn)行命令很簡(jiǎn)單,只需要在命令前面加上 sudo 即可:
$sudocommand
一般來(lái)說會(huì)提示輸入密碼,輸入密碼后回車即可。
$sudocommand [sudo]passwordforuser:
Sudo 對(duì)比 Root
最小權(quán)限原則是一種信息和計(jì)算機(jī)安全概念,它認(rèn)為授予程序和用戶執(zhí)行任務(wù)所需的最少或最低限度的權(quán)限。
以 root 用戶登錄后,輸入到終端的每一條命令都以系統(tǒng)最高權(quán)限運(yùn)行,違反了最小權(quán)限原則。像 rm 這樣的簡(jiǎn)單命令可用于刪除核心根目錄或文件,而不會(huì)在意外時(shí)提示用戶。例如,如果您嘗試使用以下命令刪除 /etc 之類的根目錄:
$rm-rf/etc
當(dāng)您以普通用戶身份登錄時(shí),您將被拒絕許可。當(dāng)以 root 身份登錄時(shí),不會(huì)顯示任何提示,并且整個(gè)文件夾將被刪除 – 這很可能會(huì)破壞您的系統(tǒng),因?yàn)檫\(yùn)行系統(tǒng)所需的特殊配置文件存儲(chǔ)在 /etc 目錄中。您也可能最終錯(cuò)誤地格式化磁盤,并且系統(tǒng)不會(huì)提示您。
此缺陷還擴(kuò)展到以 root 身份運(yùn)行代碼或應(yīng)用程序;應(yīng)用程序中的一個(gè)小錯(cuò)誤可能會(huì)刪除一些系統(tǒng)文件,因?yàn)樵搼?yīng)用程序是在最高權(quán)限下運(yùn)行的。
Sudo 提供細(xì)粒度的訪問控制。它僅向需要它的特定程序授予提升的權(quán)限。您知道哪個(gè)程序以提升的權(quán)限運(yùn)行,而不是使用 root shell(以 root 權(quán)限運(yùn)行每個(gè)命令)。
Sudo 也可以配置為以另一個(gè)用戶身份運(yùn)行命令,指定允許哪些用戶和組使用 sudo 運(yùn)行命令,或者通過編輯 sudoers 文件設(shè)置以 root 權(quán)限運(yùn)行程序的超時(shí)。
因此,不建議使用 root shell 運(yùn)行命令,因?yàn)槟茐南到y(tǒng)的機(jī)會(huì)要高得多。如果您需要更高權(quán)限或 root 權(quán)限來(lái)運(yùn)行命令,請(qǐng)使用 sudo 確保只有該命令以 root 權(quán)限運(yùn)行。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11351瀏覽量
210503 -
文件
+關(guān)注
關(guān)注
1文章
571瀏覽量
24834 -
命令
+關(guān)注
關(guān)注
5文章
698瀏覽量
22126 -
root
+關(guān)注
關(guān)注
1文章
86瀏覽量
21422
原文標(biāo)題:Linux 中 root 與 sudo 的用法與區(qū)別,居然這么多人搞不清楚!
文章出處:【微信號(hào):良許Linux,微信公眾號(hào):良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
若忘記了Linux系統(tǒng)的root密碼,該怎么辦?
在 Linux 中運(yùn)行 sudo 命令不需要密碼
Linux中易混淆命令的區(qū)別
![<b class='flag-5'>Linux</b><b class='flag-5'>中</b>易混淆命令的<b class='flag-5'>區(qū)別</b>](https://file.elecfans.com/web1/M00/C7/B8/o4YBAF9tjiiAQOa4AAAawqCJjQ8347.png)
sudo中存在一個(gè)嚴(yán)重的漏洞:無(wú)需密碼就能獲取root權(quán)限
![<b class='flag-5'>sudo</b><b class='flag-5'>中</b>存在一個(gè)嚴(yán)重的漏洞:無(wú)需密碼就能獲取<b class='flag-5'>root</b>權(quán)限](https://file.elecfans.com/web1/M00/DD/E7/o4YBAGAYw-mAEmrBAC1V0lE6r7U333.gif)
蘋果macOS Sudo現(xiàn)重大漏洞:可為任意本地用戶授予root權(quán)限
Linux中su和sudo命令有什么區(qū)別
如何使用sudo命令以及選項(xiàng)
值得考慮的4個(gè)最佳Linux sudo命令替代方案
linux中su和sudo的區(qū)別是什么
Linux命令su和sudo的區(qū)別
首個(gè)Rust版sudo發(fā)布!
![首個(gè)Rust版<b class='flag-5'>sudo</b>發(fā)布!](https://file1.elecfans.com/web2/M00/A1/43/wKgZomTxmmmAWUIHAAAGMumvpgw935.png)
什么是sudo rm -rf?為什么這個(gè)命令如此危險(xiǎn)?
su與sudo命令介紹及主要用法
禁止使用root用戶通過ssh遠(yuǎn)程登錄Linux
![禁止使用<b class='flag-5'>root</b>用戶通過ssh遠(yuǎn)程登錄<b class='flag-5'>Linux</b>](https://file1.elecfans.com/web3/M00/03/53/wKgZPGdmfF-ABI_-AAANrU-oda4066.png)
評(píng)論