1. 程式人生 > 實用技巧 >su -和su命令(注意命令後面沒有其他引數了)

su -和su命令(注意命令後面沒有其他引數了)

>>> hot3.png

本人以前一直習慣直接使用root,很少使用su,前幾天才發現su與su -命令是有著本質區別的!

大部分Linux發行版的預設賬戶是普通使用者,而更改系統檔案或者執行某些命令,需要root身份才能進行,這就需要從當前使用者切換到root使用者。Linux中切換使用者的命令是su或su -。前天我在使用useradd這個命令時,才體會到這兩者的本質區別。如圖:

我首先是用su命令切換到root身份的,但是執行useradd時,出現錯誤:bash: useradd: command not found。google了一下,原因是在這個用su命令切換過來的root使用者上。


su命令和su -命令最大的本質區別就是:前者只是切換了root身份,但Shell環境仍然是普通使用者的Shell;而後者連使用者和Shell環境一起切換成root身份了。只有切換了Shell環境才不會出現PATH環境變數錯誤。su切換成root使用者以後,pwd一下,發現工作目錄仍然是普通使用者的工作目錄;而用su -命令切換以後,工作目錄變成root的工作目錄了。用echo $PATH命令看一下su和su -以後的環境變數有何不同。以此類推,要從當前使用者切換到其它使用者也一樣,應該使用su -命令。如圖:

Linux就是這樣,有時候配置檔案多了或者少了一個空格,服務就執行不了。細節問題一定要注意,這樣才能少走彎路!

擴充套件閱讀一:Linux下 su命令與su - 命令有什麼區別?

su 是切換到其他使用者,但是不切換環境變數(比如說那些export命令檢視一下,就知道兩個命令的區別了)

su - 是完整的切換到一個使用者環境

所以建議大家切換使用者的時候,儘量使用 su - linuxso 這樣 否則可能發現某些命令執行不了


擴充套件閱讀二:su和sudo的區別

由於su 對切換到超級許可權使用者root後,許可權的無限制性,所以su並不能擔任多個管理員所管理的系統。如果用su 來切換到超級使用者來管理系統,也不能明確哪些工作是由哪個管理員進行的操作。特別是對於伺服器的管理有多人蔘與管理時,最好是針對每個管理員的技術特長和 管理範圍,並且有針對性的下放給許可權,並且約定其使用哪些工具來完成與其相關的工作,這時我們就有必要用到 sudo。


通過sudo,我們能把某些超級許可權有針對性的下放,並且不需要普通使用者知道root密碼,所以sudo 相對於許可權無限制性的su來說,還是比較安全的,所以sudo 也能被稱為受限制的su ;另外sudo 是需要授權許可的,所以也被稱為授權許可的su;

sudo 執行命令的流程是當前使用者切換到root(或其它指定切換到的使用者),然後以root(或其它指定的切換到的使用者)身份執行命令,執行完成後,直接退回到當前使用者;而這些的前提是要通過sudo的配置檔案/etc/sudoers來進行授權;


轉載於:https://my.oschina.net/aspirs/blog/607109