在學習linux輸入命令時,發現su和su - 是有區別的,於是查詢了su命令的所有用法,學習一下。
su:( switch user切換使用者),可讓乙個普通使用者切換為
超級使用者
或其他使用者,並可臨時擁有所切換使用者的
許可權,切換時需輸入欲切換使用者的密碼;也可以讓超級使用者切換為普通使用者,臨時以低許可權身份處理事務,切換時無需輸入欲切換使用者的密碼。
命令使用方式:
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [user [arg]]
直接解釋引數的意思不太直觀,下面用例項來說明吧。
切換包含從一般使用者到root使用者,從root使用者到一般賬戶。
從一般使用者到root使用者:su root或者 su - root,此時需要輸入root的密碼。
注意中間有個「-」表示是否切換到root使用者的主目錄下。
從root使用者到一般使用者:su name或者su - name,name為一般使用者名稱,此時不需要密碼。
注意中間有個「-」表示是否切換到name使用者的主目錄下。
從一般使用者到一般使用者:su name或者su - name,此時需要輸入name使用者的密碼。
注意中間有個「-」表示是否切換到name使用者的主目錄下。
上圖,首先登入的時名為zt的一般使用者,先切換到root使用者,需要密碼,進去之後,#號前面的目錄為/home/zt,是使用者zt的主目錄,因此目錄沒有切換。然後,從root賬戶切換到zt使用者,發現,$前目錄為~,為zt的目錄,也沒有切換。
然後使用su - root和su - zt切換,此時目錄都變成了當前使用者的主目錄。
su命令和su -命令最大的本質區別就是:前者只是切換了root身份,但
shell
環境仍然是普通使用者的
shell
;而後者連使用者和shell環境一起切換成root身份了。只有切換了shell環境才不會出現path環境變數錯誤。su切換成root使用者以後,pwd一下,發現工作目錄仍然是普通使用者的工作目錄;而用su -命令切換以後,工作目錄變成root的工作目錄了。用echo $path命令看一下su和su -以後的環境變數有何不同。以此類推,要從當前使用者切換到其它使用者也一樣,應該使用su -命令。
輸入:su -c ls root
變更帳號為 root 並在執行 ls 指令後退出變回原使用者。
由於su 對切換到超級許可權使用者root後,許可權的無限制性,所以su並不能擔任多個管理員所管理的系統。如果用su 來切換到超級使用者來管理系統,也不能明確哪些工作是由哪個管理員進行的操作。特別是對於伺服器的管理有多人參與管理時,最好是針對每個管理員的技術特長和 管理範圍,並且有針對性的下放給許可權,並且約定其使用哪些工具來完成與其相關的工作,這時我們就有必要用到 sudo。
通過sudo,我們能把某些超級許可權有針對性的下放,並且不需要普通使用者知道root密碼,所以sudo 相對於許可權無限制性的su來說,還是比較安全的,所以sudo 也能被稱為受限制的su ;另外sudo 是需要授權許可的,所以也被稱為授權許可的su;
sudo 執行命令的流程是當前使用者切換到root(或其它指定切換到的使用者),然後以root(或其它指定的切換到的使用者)身份執行命令,執行完成後,直接退回到當前使用者;而這些的前提是要通過sudo的配置檔案/etc/sudoers來進行授權。
Linux 下的su命令
linux su 命令 建議大家切換使用者的時候 使用 su root 這樣,否則可能發現某些命令執行不了 關於su su 及 sudo的區別 請往下看 1.命令作用 su的作用是變更為其它使用者的身份,超級使用者除外,需要鍵入該使用者的密碼。2.使用方式 su fmp c command s sh...
Linux下su與su 命令的區別
使用 su root 切換到root使用者後,不可以使用service命令 使用 su 後,就可以使用service命令了。原因 su命令和su 命令區別就是 su只是切換了root身份,但shell環境仍然是普通使用者的shell 而su 連使用者和shell環境一起切換成root身份了。只有切換...
Linux下su與su 命令的區別
在啟動伺服器ntpd服務時遇到乙個問題 使用 su root 切換到root使用者後,不可以使用service命令 使用 su 後,就可以使用service命令了。原因 su命令和su 命令區別就是 su只是切換了root身份,但shell環境仍然是普通使用者的shell 而su 連使用者和shel...