Linux命令之su -- 用于切换当前用户身份到其他用户身份
文章目錄
- 命令介紹
- 特別重要
- 常用選項
- su 命令存在的安全隱患
- 參考示例
- 切換成指定的用戶身份,但是環境變量不變
- 切換成指定的用戶身份,并且改成對應用戶的環境變量
- 切換成指定的用戶,并告知新的 shell 不要去讀取啟動文件
- 切換成指定的用戶執行命令,執行后恢復原來的用戶身份
- 切換成其它用戶后,如何恢復成原來的用戶身份
- 切換成 root 用戶
命令介紹
su 英文就是 switch user or substitute user identity。su 命令用于切換當前用戶身份到其他用戶身份,或者以指定用戶的身份執行命令或程序。
語法為 su 后接用戶登錄名稱,接著系統會要求輸入所要變更的用戶的登錄密碼,成功登錄后,命令行的前綴會改變,說明你已經切換成功。當然你也可以利用 who -m 命令來驗證當前登陸的身份。
切換后,你會一直保持該用戶身份,直至退出 Terminal 或者輸入 exit 命令。
普通用戶切換到 root 用戶,可以使用 su - 或 su - root,但是必須輸入 root 密碼才能完成切換。root 用戶切換到普通用戶,可以使用 su - username,不需要輸入任何密碼即可完成切換。
特別重要
使用命令 su 切換其它用戶身份時,如果不指定選項 - 或 -l 或 --login,這叫【非登錄式】切換,即不會讀取目標用戶的配置文件,所以運行的用戶環境還是原來用戶的環境;如果指定了上述選項進行切換,這叫【登錄式】切換,會讀取目標用戶的配置文件,切換后完全使用目標用戶的環境執行命令,所以建議以后切換用戶的時候都加上上述選項進行切換。
常用選項
| -c<指令> 或 --command=<指令> | 執行完指定的指令后,即恢復原來的身份 |
| -f 或 --fast | 適用于csh與tsch,使shell不用去讀取啟動文件(例如: csh.cshrc 等) |
| - 或 -l 或 --login | 改變身份時,也同時變更工作目錄,以及環境變量 HOME、SHELL、USER、LOGNAME、PATH 等。這個參數加了之后,就好像是重新 login 為目標用戶一樣,大部份環境變量都是以目標用戶的為主,并且工作目錄也會改變。 |
| -m 或 -p 或 --preserve-environment | 變更身份時,不要變更環境變量 |
| -s 或 --shell | 指定要執行的shell |
| --help | 顯示幫助信息 |
| --version | 顯示版本信息 |
su 命令存在的安全隱患
使用 su 命令可以讓普通用戶切換到 root 身份去執行某些特權命令,但存在一些問題,比如說:
1.僅僅為了一個特權操作就直接賦予普通用戶超級管理員賬戶的完整權限,這顯然是不明智的;
2.如果大家都要使用 su 命令切換到 root 身份,而使用命令 su 切換到 root 用戶必須輸入 root 的登錄密碼,這就導致很多人都知道 root 的密碼,這是很糟糕的。
所以在實際的工作中,更多的是使用命令 sudo 來獲取某些用戶的特有權限去執行命令,而且普通用戶必須通過授權才能使用命令 sudo。
參考示例
切換成指定的用戶身份,但是環境變量不變
例如,當前登錄用戶是 root,想要切換到 linuxcool 用戶,但環境變量仍然是 root用戶的:
[root@linuxcool ~]# su linuxcool切換成指定的用戶身份,并且改成對應用戶的環境變量
切換成用戶 linuxcool,并將工作目錄以及相關的環境變量也改成用戶 linuxcool 的:
[root@linuxcool ~]# su - linuxcool說通俗點,命令 su - 是完整地切換到另一個用戶環境,建議大家切換用戶的時候,盡量使用 su - username 這樣,否則可能發現某些命令執行不了。
切換成指定的用戶,并告知新的 shell 不要去讀取啟動文件
[mysql@linuxcool ~]# su root -f切換成指定的用戶執行命令,執行后恢復原來的用戶身份
當前登錄用戶是 mysql,切換成用戶 root 執行命令 ls,命令執行完后恢復原來的用戶身份:
[mysql@linuxcool ~]# su root -c ls切換成其它用戶后,如何恢復成原來的用戶身份
切換成另一個用戶身份之后,可以輸入 exit 恢復成原來的用戶身份。
例如,當前登錄用戶是 root,切換成用戶 mysql:
[root@htlwk0001host ~]# su mysql -- 切換成用戶 mysql [mysql@htlwk0001host root]$輸入命令 exit,退出當前用戶 mysql 身份,恢復成原來的用戶身份 root:
[mysql@htlwk0001host root]$ exit -- 退出當前用戶 mysql exit [root@htlwk0001host ~]#切換成 root 用戶
[mysql@htlwk0001host ~]$ su -或
[mysql@htlwk0001host ~]$ su - root或
[mysql@htlwk0001host ~]$ su # 不推薦這種方式,雖然切換成用戶root了,但是運行的依舊是mysql的用戶環境 [root@htlwk0001host mysql]# echo $USER mysql [root@htlwk0001host mysql]# echo $LOGNAME mysql [root@htlwk0001host mysql]# echo $PATH /var/lib/mysql/.local/bin:/var/lib/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin [root@htlwk0001host mysql]# echo $SHELL /bin/bash總結
以上是生活随笔為你收集整理的Linux命令之su -- 用于切换当前用户身份到其他用户身份的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑调低虚拟内存(电脑虚拟内存怎么调高)
- 下一篇: 上坟摆什么水果吉利(上供最好的五种水果,