sudo,代表了Linux的絕對(duì)霸權(quán)!
su是一個(gè)Linux命令,渾身充滿了power??梢郧袚Q到其他用戶或者高權(quán)用戶去干sth。
請(qǐng)?jiān)徫疫@外企員工中英文夾雜式的表達(dá),reason很簡(jiǎn)單,就是要你有很深的impression。
在很久很久之前,公司窮買(mǎi)不起MacBook,xjjdog只能使用用SecureCRT來(lái)遠(yuǎn)程連接服務(wù)器。
為了增加安全性,首先需要登陸一臺(tái)跳板機(jī),然后再在跳板機(jī)上使用ssh命令連接真正的目標(biāo)機(jī)器。
其中,就有一臺(tái)服務(wù)器對(duì)環(huán)境要求非??量?。當(dāng)服務(wù)啟動(dòng),總是發(fā)現(xiàn)它的環(huán)境變量不是自己所想要的那樣,即使在root用戶的??.bash_profile?
?文件里強(qiáng)行設(shè)置都沒(méi)用。
到最后才發(fā)現(xiàn),是su命令用錯(cuò)了。
那么, su, su -, sudo -i, sudo -s ,到底有什么區(qū)別?
sudo
首先,我們來(lái)看下sudo。
我們最常用的,就是 sudo -s了。它的意思是:
- 使用當(dāng)前用戶的環(huán)境變量
- 不跳轉(zhuǎn)切換用戶后的目錄
- 切換到超級(jí)管理員或者目標(biāo)用戶的權(quán)限
這通常會(huì)帶來(lái)一些問(wèn)題,比如xjjdog用戶下設(shè)置了自己的一套環(huán)境變量,當(dāng)使用 su -s 切換到超級(jí)管理員權(quán)限,依然使用的是xjjdog的環(huán)境變量。這樣,就會(huì)發(fā)生找不到命令,語(yǔ)言錯(cuò)誤,甚至配置錯(cuò)誤的結(jié)果。
相對(duì)應(yīng)的, sudo -i 就干凈利索的多。它的意思是:
- 使用root或者目標(biāo)用戶用戶的環(huán)境變量
- 切換到 /root或者目標(biāo)用戶的home目錄
- 切換到超級(jí)管理員或者目標(biāo)用戶的權(quán)限
大多數(shù)情況下,推薦使用 su -i 替代 su -s,這樣出問(wèn)題的幾率會(huì)小的很。
su
與此對(duì)應(yīng)的,就是su命令。
如果只運(yùn)行su,它的效果和sudo -s是一樣的。如果使用了 su - ,那么它的效果就是sudo -i。
如果沒(méi)有特殊原因,任何使用,都應(yīng)該使用sudo -i或者su -。
高權(quán)賬號(hào)
隨著運(yùn)維工具的提升,普通開(kāi)發(fā)已經(jīng)很少有機(jī)會(huì)接觸這種命令了。但萬(wàn)變不離其宗,在開(kāi)發(fā)運(yùn)維工具的時(shí)候,同樣會(huì)碰到這樣的問(wèn)題。
很多時(shí)候,公司設(shè)定了嚴(yán)格的權(quán)限和分級(jí)制度,用來(lái)規(guī)范開(kāi)發(fā)人員的操作。
但是,高權(quán)賬號(hào)總是必要的。這些賬號(hào)通常都會(huì)分配給leader們。
比較搞笑的是,公司的開(kāi)發(fā)規(guī)范大多數(shù)開(kāi)發(fā)是能夠遵守的,而帶頭破壞規(guī)范的,一般還是高權(quán)賬號(hào)。
公司的問(wèn)題和社會(huì)的問(wèn)題都是相似的。“管理者”設(shè)計(jì)了一套機(jī)制,用來(lái)避免風(fēng)險(xiǎn),約束行為。但當(dāng)繩子套在自己身上的時(shí)候,才體驗(yàn)到它的束手束腳。
怎么辦?su來(lái)幫忙吧。效率也提升了,問(wèn)題也解決了,留給一臉懵逼的后來(lái)人:“規(guī)范呢?怎么能帶頭破壞呢”?
沒(méi)辦法,誰(shuí)讓別人有sudo權(quán)限呢?
作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。