天天看點

sudo,代表了Linux的絕對霸權!

sudo,代表了Linux的絕對霸權!

su是一個Linux指令,渾身充滿了power。可以切換到其他使用者或者高權使用者去幹sth。

請原諒我這外企員工中英文夾雜式的表達,reason很簡單,就是要你有很深的impression。

在很久很久之前,公司窮買不起MacBook,xjjdog隻能使用用SecureCRT來遠端連接配接伺服器。

為了增加安全性,首先需要登陸一台跳闆機,然後再在跳闆機上使用ssh指令連接配接真正的目标機器。

其中,就有一台伺服器對環境要求非常苛刻。當服務啟動,總是發現它的環境變量不是自己所想要的那樣,即使在root使用者的​

​.bash_profile​

​檔案裡強行設定都沒用。

到最後才發現,是su指令用錯了。

那麼, su, su -, sudo -i, sudo -s ,到底有什麼差別?

sudo

首先,我們來看下sudo。

我們最常用的,就是 sudo -s了。它的意思是:

  1. 使用目前使用者的環境變量
  2. 不跳轉切換使用者後的目錄
  3. 切換到超級管理者或者目标使用者的權限

這通常會帶來一些問題,比如xjjdog使用者下設定了自己的一套環境變量,當使用 su -s 切換到超級管理者權限,依然使用的是xjjdog的環境變量。這樣,就會發生找不到指令,語言錯誤,甚至配置錯誤的結果。

相對應的, sudo -i 就幹淨利索的多。它的意思是:

  1. 使用root或者目标使用者使用者的環境變量
  2. 切換到 /root或者目标使用者的home目錄
  3. 切換到超級管理者或者目标使用者的權限

大多數情況下,推薦使用 su -i 替代 su -s,這樣出問題的幾率會小的很。

su

與此對應的,就是su指令。

如果隻運作su,它的效果和sudo -s是一樣的。

如果使用了 su - ,那麼它的效果就是sudo -i。

如果沒有特殊原因,任何使用,都應該使用sudo -i或者su -。

高權賬号

随着運維工具的提升,普通開發已經很少有機會接觸這種指令了。但萬變不離其宗,在開發運維工具的時候,同樣會碰到這樣的問題。

很多時候,公司設定了嚴格的權限和分級制度,用來規範開發人員的操作。

但是,高權賬号總是必要的。這些賬号通常都會配置設定給leader們。

比較搞笑的是,公司的開發規範大多數開發是能夠遵守的,而帶頭破壞規範的,一般還是高權賬号。

公司的問題和社會的問題都是相似的。“管理者”設計了一套機制,用來避免風險,限制行為。但當繩子套在自己身上的時候,才體驗到它的束手束腳。