Linux 系統中用戶切換(su user與 su - user 的區別)
1,su命令
(su為switch user,即切換用戶的簡寫)
格式:su -l USERNAME(-l為login,即登陸的簡寫,其中l可以省略)
如果不指定USERNAME(用戶名),默認即為root,所以切換到root的身份的命令即為:su -root或是直接 su -
使用su切換用戶時需知曉對應用戶的登陸密碼
2:su - 與su的區別
su - USERNAME切換用戶後,同時切換到新用戶的工作環境中
su USERNAME切換用戶後,不改變原用戶的工作目錄,及其他環境變量目錄
3,sudo命令
sudo是一種權限管理機制,依賴於/etc/sudoers,其定義了授權給哪個用戶可以以管理員的身份能夠執行什麽樣的管理命令;
格式:sudo -u USERNAME COMMAND
當普通用戶通過sudo以root用戶執行命令時,sudo後面的 -uUSERNAME可省略,即sudo COMMAND 即意為sudo以root用戶執行
5,sudo與su的區別
使用su切換用戶時需知曉對應用戶的登陸密碼,即若切換成root用戶身份,需知道root用戶的登陸密碼。作為root用戶管理員,如何授權其他普通用戶,在不需要知曉root密碼的情況下,執行root權限的命令操作?此時即可使用sudo。
4,sudoers文件
sudo的配置文件為:/etc/sudoers。
sudoers文件中允許指定用戶在不需要知道root用戶的登陸密碼的情況下,可以以root用戶身份運行各種命令。此文件必須使用visudo命令編輯配置。(visudo命令可以提供basic sanitychecks和check for parse errors,即提供快速的正確性有效性檢查,以及語法檢查功能)
查看sudores文件,其中有一行如下圖,定義了允許root用戶從任何主機登陸,使用sudo可以切換成任何用戶的身份,執行所有命令。
查看sudoers文件,其中有兩行如下圖,定義了組可以使用sudo命令的配置。
另外一篇類似文章,二者可互補,可作參考:
1. Linux系統中用戶切換的命令為su,語法為:
su [-fmp] [-c command] [-s shell] [--help] [--version] [-] [USER [ARG]]
參數說明
-f , –fast:不必讀啟動文件(如 csh.cshrc 等),僅用於csh或tcsh兩種Shell。
-l , –login:加了這個參數之後,就好像是重新登陸一樣,大部分環境變量(例如HOME、SHELL和USER等)都是以該使用者(USER)為主,並
且工作目錄也會改變。如果沒有指定USER,缺省情況是root。
-m, -p ,–preserve-environment:執行su時不改變環境變數。
-c command:變更賬號為USER的使用者,並執行指令(command)後再變回原來使用者。
–help 顯示說明文件
–version 顯示版本資訊
USER:欲變更的使用者賬號,
ARG: 傳入新的Shell參數。
2. su [user] 和 su - [user]的區別:
su [user]切換到其他用戶,但是不切換環境變量,su - [user]則是完整的切換到新的用戶環境。
如:
[root@rac1 ~]# pwd --當前目錄
/root
[root@rac1 ~]# su oracle --使用su [user]
[oracle@rac1 root]$ pwd --當前目錄沒有改變,還是之前的用戶目錄
/root
[oracle@rac1 root]$ su - oracle --使用su - [user]
Password:
[oracle@rac1 ~]$ pwd --當前目錄變為當前用戶的家目錄
/home/oracle
[oracle@rac1 ~]$
所以建議大家在切換用戶時,盡量用su - [user],否則可能會出現環境變量不對的問題。
Linux 系統中用戶切換(su user與 su - user 的區別)