su、sudo、su - root的區別

一,su、sudo、su - root的區別
su和sudo的區別
共同點:都是root用戶權限;
不同點:su只獲得root權限,工作環境不變,還是在切換之前用戶的工作環境;sudo是完全獲得root的權限和root的工作環境。
sudo:表示獲取臨時的root權限執行命令。
sudo執行命令的流程:

1、當前用戶切換到root(或其他指定切換到的用戶),
2、以root(或其他指定的切換到的用戶)身份執行命令,
3、執行完成後,直接退回到當前用戶,而這些的前提是要通過sudo的配置文件/etc/sudoers來進行授權。
su - root和su root區別
su - root:以root身份登錄,then the shell is login shell, .bash_profile and .bashrc will be sourced.
su root/其他命令:與root建立一個連接,通過root執行命令。then only .bashrc will be sourced.
最直接的區別是su目錄還是原先用戶目錄,su - root後目錄就變爲root用戶的主目錄。

因此,可以在.bashrc修改PATH、PHP、APACHE、Mysql等路徑。

Mac上的sudo -i
sudo -i :切換用戶到root

作者:AmyZYX
出處:http://www.cnblogs.com/amyzhu/

二, 前幾天,在一次項目中,犯了一個很低級的錯誤,但是沒弄明白是什麼問題。情況是這樣的,我們在做災備,重啓系統化,以root用戶權限,通過 su oracle ,進去後,oracle的rac 無法正常啓動,我沒細看,一直在找其他的原因,最後經過同事提醒,說應該執行 su - oracle。果然如他所說,進去後正常啓動。

  今天忽然想起,又仔細查看了資料,做個筆記,備忘。也提醒自己注意細節。

su - root is the same as su -

just like login as root, then the shell is login shell,
which mean it will expericene a login process,
usually .bash_profile and .bashrc will be sourced

su root is the same as su
like you open an interactive shell in root name,
then only .bashrc will be sourced.

su 後面不加用戶是默認切到 root
su 是不改變當前變量
su - 是改變爲切換到用戶的變量
也就是說su只能獲得root的執行權限,不能獲得環境變量

而su -是切換到root並獲得root的環境變量及執行權限

語法:

$ su [user_name]
su 命令可以用來交互地更改你的用戶ID和組ID。 Su是switch user 或set user id的一個縮寫。這個命令讓你開啓一個子進程,成爲新的用戶 ID 和賦予你存取與這個用戶ID 關聯所有文件的存取權限。因此,出於安全的考慮,你在實際轉換身份時,會被要求輸入這個用戶帳號的密碼。
如果沒有參數,su 命令將你轉換爲 root(系統管理員)。root 帳號有時也被稱爲超級用戶,因爲這個用戶可以存取系統中的任何文件。也正是這個原因,許多人將su命令看成是 supper-user(超級用戶)的一個縮寫。當然,你必須要提供 root密碼。 想要回到你原先的用戶身份,不要再使用 su 命令,你只需要使用 exit命令退出你使用su命令而生成的新的對話進程。
$ su – username
一些配置文件是爲你的對話線索而設立的。當你使用命令 su username時,你的對話特徵和你原始的登錄身份一樣。如果你想要你的對話進程擁有轉換後的用戶 ID一致的特徵,你要使用短斜槓: su – username。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章