普通用戶之間切換以及普通用戶切換至 root 用戶,都需要知曉對方的密碼,只有正確輸入密碼,才能實現切換;從 root 用戶切換至其他用戶,無需知曉對方密碼,直接可切換成功。
[root@localhost ~]# su [選項] 用戶名
[lamp@localhost ~]$ su -root
密碼: <-- 輸入 root 用戶的密碼
#"-"代表連帶環境變量一起切換,不能省略
[lamp@localhost ~]$ whoami
lamp
#當前我是lamp
[lamp@localhost ~]$ su - -c "useradd user1" root
密碼:
#不切換成root,但是執行useradd命令添加user1用戶
[lamp@localhost ~]$ whoami
lamp
#我還是lamp
[lamp@localhost ~]$ grep "user1' /etc/passwd
userl:x:502:504::/home/user1:/bin/bash
#user用戶已經添加了
[lamp@localhost ~]$ whoami
lamp
#當前我是lamp
[lamp@localhost ~]$ su - lamp1
Password: <--輸入lamp1用戶的密碼
#切換至 lamp1 用戶的工作環境
[lamp@localhost ~]$ whoami
lamp1
#什么也不做,立即退出切換環境
[lamp1@localhost ~]$ exit
logout
[lamp@localhost ~]$ whoami
lamp
初學者可以這樣理解它們之間的區別,即有 - 選項,切換用戶身份更徹底;反之,只切換了一部分,這會導致某些命令運行出現問題或錯誤(例如無法使用 service 命令)。
通過下面這個例子,可直觀的看到 su 和 su - 的區別:[lamp@localhost ~]$ whoami
lamp
#查詢用戶身份,我是lamp
[lamp@localhost ~]$ su root
密碼:
<-輸入root密碼
#切換到root,但是沒有切換環境變量。注意:普通用戶切換到root需要密碼
[root@localhost ~]# env | grep lamp
#查看環境變量,提取包含lamp的行
USER=lamp
#用戶名還是lamp,而不是root
PATH=/usr/lib/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/lamp/bin
#命令査找的路徑不包含超級用戶路徑
MAIL=/var/spool/mail/lamp
PWD=/home/lamp
LOGNAME=lamp
#郵箱、主目錄、目前用戶名還是lamp
新聞熱點
疑難解答