Linux 的 su - root 與 sudo su 根本不是一回事!英文拆解,立馬搞懂Linux的兩大權限命令的區(qū)別
Linux工作中很多人常要執(zhí)行一些特權命令,就常要用到su和sudo。但有朋友說了,只會照樣用,實際真不太理解這兩種命令的區(qū)別,看起來都是切換到root權限的命令,到底有什么區(qū)別?什么時候該用su,什么時候該用sudo呢?
在這里小編將與各位熱愛學習的Linux小伙伴一起學(qie)習(cuo)下對su和sudo的另一種玩法,然后趁這次機會咱們徹底搞懂這兩個命令吧。
首先,學Linux的小伙伴,英文可不能還給英語老師!英文好的小伙伴,有時候確實會多那么一丟丟便利。
比如su 是什么英文的簡寫? sudo 又是什么英文的簡寫?
英文拆解后,命令其實不用死記,理解一下就OK了
會拆解Linux命令的英文全拼,對于你理解(從肌肉記憶到理解)Linux的幾百個命令的用法,其實是一種很好的思路。
既然是特權命令時需要的su命令,那么肯定涉及到不同用戶權限的切換,也就是substitute user(代替用戶的英文全稱,或switch user切換用戶),簡寫就是su??梢酝ㄟ^ su 切換到超級用戶root或其他用戶。
那么 sudo 就好理解了—— 也就是substitute user DO(超級用戶或其他用戶 執(zhí)行命令)的意思。注意,括號里特意強調了執(zhí)行命令這幾個字。
su其實只用來切換到環(huán)境,不是用來立刻執(zhí)行命令的
使用 su 時,我們可以在有或沒有 – 參數(shù)的情況下運行它,如:
su admin
或:
su - admin
要切換到root用戶,則命令為:
su root
與:
su - root
其中 addmin 是手動創(chuàng)建過的普通管理員,如果未建立可在測試之前建立;root就無需解釋了。
這里的 - 有什么用呢,此參數(shù)告訴 su 切換用戶后登錄 shell,該 shell 會重置所有環(huán)境變量并重新創(chuàng)建它們。如果我們省略此選項,幾乎所有現(xiàn)有的環(huán)境變量都將與當前命令執(zhí)行時的環(huán)境變量保持不變,作為切換后的用戶shell的環(huán)境變量。這個字符對更改用戶后將運行的命令有很多影響。
su是為了切換到其他其他用戶的shell。而并沒有馬上在su命令種執(zhí)行業(yè)務命令。切換shell后,再輸入其他命令,都會以新用戶的權限。
sudo 是切換到其他用戶,且立刻執(zhí)行命令
sudo echo $PWD
默認不帶-u指定用戶的情況下則表示切換到root權限執(zhí)行命令echo $PWD。
除了以root權限執(zhí)行外,還可以是其他用戶名,也通過-u 參數(shù)指定。比如:
sudo -u admin echo $PWD
本文對su 和sudo 的介紹,指出了關鍵環(huán)節(jié)。點到為止。
仍感興趣深入學習的小伙伴建議看下su命令的英文幫助文檔[1]和sudo 命令的引文幫助文檔[2]
參考資料:
- [1]su命令的英文幫助文檔: https://www.man7.org/linux/man-pages/man1/su.1.html
- [2]sudo 命令的引文幫助文檔: https://www.man7.org/linux/man-pages/man8/sudo.8.html