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

本人之前一直習慣直接使用root,不多使用su,前幾天才發現su與su -命令是有着本質區別的!linux

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

我首先是用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就是這樣,有時候配置文件多了或者少了一個空格,服務就運行不了。細節問題必定要注意,這樣才能少走彎路!bash

擴展閱讀一: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來進行受權; 工具

相關文章
相關標籤/搜索