su
和sudo
是兩個(gè)最常用的切換到root超級(jí)用戶的Linux命令。雖然看起來(lái)很像,功能上也類似,但使用上還是有不少差異。
本文介紹Linux系統(tǒng)su和sudo的區(qū)別,并分別給出su和sudo命令的常見(jiàn)用法。
su
?是切換到root用戶的傳統(tǒng)命令,其主要用法是:
su
:不帶參數(shù)直接輸入su
將切換到root用戶,需要輸入root密碼su?-
:等同于?su?-l
(建議使用),切換到root用戶并啟用root的環(huán)境變量(等同于root身份登錄)su?-l?用戶名
:切換到其他用戶,需要輸入該用戶的密碼。不帶其他參數(shù)時(shí)等同于?su?-?用戶
su?-c?'命令'
:以root用戶執(zhí)行命令,類似于sudo,不同之處是需要輸入root密碼可以看到,su
命令主要是用來(lái)切換root身份,前提是需要知道root密碼。
除了su,另一個(gè)切換身份的命令是ssh:ssh root@localhost,等同于打開(kāi)新終端ssh登錄
sudo
程序很早就出來(lái)了,但直到Ubuntu的推廣才流行起來(lái)。Ubuntu安裝過(guò)程中不會(huì)設(shè)置root密碼,默認(rèn)使用普通賬戶登錄,sudo
便是普通賬戶獲取root權(quán)限的命令。
sudo
和su
的區(qū)別點(diǎn)主要有:
su
可以不帶參數(shù)執(zhí)行,sudo
不行sudo
命令獲取root權(quán)限時(shí)輸入的是用戶密碼,而su
要求輸入root密碼;/etc/sudo/sudoers
文件中的用戶才能使用sudo
命令,任何人都可以使用su
命令sudo
能獲取root權(quán)限,su
不行su
可以切換到其他用戶登錄,sudo
只能切換到root用戶(sudo su?-l?用戶名
的方式可以,但這是su的能力)有了sudo
,可以在不泄漏(不設(shè)置)root密碼的前提下讓用戶執(zhí)行特權(quán)命令,并且sudo提供命令歷史記錄,能大大提高系統(tǒng)的安全性,因此實(shí)踐中建議使用。
和su不同,sudo命令選項(xiàng)豐富,下面介紹一些常見(jiàn)用法:
sudo?命令
:以root身份執(zhí)行命令,需要注意的是命令需要默認(rèn)PATH路徑下,否則會(huì)出現(xiàn)”sudo: xxx command not found”的錯(cuò)誤(試試?sudo ll
)sudo?-l
:列出可用的命令sudo?-i
:以root身份登錄sudo?-s
:一般等同于sudo bash
,進(jìn)入root環(huán)境,不改變工作目錄sudo su
:以sudo
方式執(zhí)行su
命令,此時(shí)輸入用戶密碼就可以了Ubuntu、MacOS默認(rèn)沒(méi)有設(shè)置root密碼,谷歌云、AWS的VPS默認(rèn)是普通用戶密鑰登錄,要想切換到root環(huán)境,sudo?-i
,然后輸入用戶密碼便進(jìn)入到了root環(huán)境。