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