前言??????
想要學(xué)好Linux,命令是基本功,企業(yè)中常用的命令大約200多個,不管是寫shell腳本還是管理操作系統(tǒng),最常用的命令必須要牢牢掌握,像我們以前學(xué)乘法口訣一樣,爛熟于心,唯有如此,才能打牢基礎(chǔ)。
?? 知識最重要的是記憶
?? 入門須知: 想要人生從容,必須全力以赴,努力才是你最終的入場券??????
?? 最后: 努力成長自己,愿我們都能在看不到的地方閃閃發(fā)光 ,一起加油進(jìn)步??????
一. su命令介紹
su命令來自于英文單詞“switch user”的縮寫,其功能是用于切換用戶身份。
管理員切換至任意用戶身份而無需密碼驗(yàn)證,而普通用戶切換至任意用戶身份均需密碼驗(yàn)證。
另外添加單個減號(-)參數(shù)為完全的身份變更,不保留任何之前用戶的環(huán)境變量信息。
特別說明的是:
切換用戶分為login-shell方式與non-login shell方式,區(qū)別在于是否在su后面加上-,主要涉及到PATH/USER/MAIL等環(huán)境變量讀取方法。使用root用戶切換至任何用戶,都不需要輸入用戶密碼。
二. 語法格式及常用選項
依照慣例,我們還是要查看一下幫助文檔
[root@mufenggrow test]# su -help
用法:
su [選項] [-] [USER [參數(shù)]...]
將有效用戶 id 和組 id 更改為 USER 的 id。
單個 - 視為 -l。如果未指定 USER,將假定為 root。
選項:
-m, -p, --preserve-environment 不重置環(huán)境變量
-g, --group <組> 指定主組
-G, --supp-group <組> 指定一個輔助組
-, -l, --login 使 shell 成為登錄 shell
-c, --command <命令> 使用 -c 向 shell 傳遞一條命令
--session-command <命令> 使用 -c 向 shell 傳遞一條命令
而不創(chuàng)建新會話
-f, --fast 向shell 傳遞 -f 選項(csh 或 tcsh)
-s, --shell <shell> 若 /etc/shells 允許,則運(yùn)行 shell
-h, --help 顯示此幫助并退出
-V, --version 輸出版本信息并退出
通過幫助文檔,我們整理出幾個常用的參數(shù):
三. 參考案例
3.1 切換到root用戶
案例一: 切換root,但是不切換環(huán)境
我們需要創(chuàng)建一個普通用戶mufeng,然后使用su命令切換到root用戶, 但是shell環(huán)境依然是普通用戶的shell
## 創(chuàng)建用戶
[root@mufenggrow test]# useradd mufeng
[root@mufenggrow test]# echo 12345678 |passwd --stdin mufeng
更改用戶 mufeng 的密碼 。
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
## 登錄普通用戶
[root@mufenggrow test]# ssh mufeng@192.168.1.101
The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established.
ECDSA key fingerprint is SHA256:9uJW2mOqzhYy5gtMsTHmt4V584na0LFqEGYXxA4rUM8.
ECDSA key fingerprint is MD5:42:35:b0:99:2c:04:c5:94:e6:f4:74:6d:af:ec:07:29.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.101' (ECDSA) to the list of known hosts.
mufeng@192.168.1.101's password:
## 切換root
[mufeng@mufenggrow ~]$ su
密碼:
[root@mufenggrow mufeng]# whoami
root
## 切換完之后,還是在mufeng的家目錄下
[root@mufenggrow mufeng]# pwd
/home/mufeng
[root@mufenggrow mufeng]#
案例二: 切換root用戶,同時切換環(huán)境
這時候就需要一個在root前面加上 - 來切換,切換完成后,用戶和shell環(huán)境都切換為root
[root@mufenggrow mufeng]# ssh mufeng@192.168.1.101
mufeng@192.168.1.101's password:
Last login: Wed Jan 25 17:10:32 2023 from mufenggrow
[mufeng@mufenggrow ~]$ pwd
/home/mufeng
[mufeng@mufenggrow ~]$ su - root
密碼:
上一次登錄:三 1月 25 17:11:50 CST 2023pts/1 上
[root@mufenggrow ~]# pwd
/root
[root@mufenggrow ~]#
3.2 切換到指定用戶
從root用戶切換到普通用戶,無需輸入密碼:
[root@mufenggrow ~]# su - mufeng
上一次登錄:三 1月 25 17:16:59 CST 2023從 mufenggrowpts/2 上
[mufeng@mufenggrow ~]$ exit
登出
[root@mufenggrow ~]# su mufeng
[mufeng@mufenggrow root]$
可以看到不加橫線的時候,切換過去之后,還是在root目錄上。
也就是說,使用- 表示連同shell環(huán)境一同切換。
3.3 不切換成root,但執(zhí)行root才能執(zhí)行的命令
案例一: 不切換成root,執(zhí)行head -n 3 /etc/passwd
此時會用到 -c參數(shù)
-c, --command <命令> 使用 -c 向 shell 傳遞一條命令
[mufeng@mufenggrow ~]$ whoami
mufeng
[mufeng@mufenggrow ~]$ head -n 3 /etc/shadow
head: 無法打開"/etc/shadow" 讀取數(shù)據(jù): 權(quán)限不夠
[mufeng@mufenggrow ~]$ su - root -c "head -n 3 /etc/passwd"
密碼:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
需要注意的是: -c后面的命令一定要加上 雙引號。
案例二:不切換root,執(zhí)行l(wèi)astb, 執(zhí)行后返回原用戶
[mufeng@mufenggrow ~]$ whoami
mufeng
## 不切換成root用戶,但執(zhí)行l(wèi)astb命令
[mufeng@mufenggrow ~]$ su - root -c lastb
密碼:
btmp begins Thu Dec 8 19:36:40 2022
## 切換用戶執(zhí)行命令,執(zhí)行玩之后返回原用戶
[mufeng@mufenggrow ~]$ su -c ls root
密碼:
anaconda-ks.cfg initial-setup-ks.cfg test 公共 模板 視頻 圖片 文檔 下載 音樂 桌面
su命令的缺憾:
su命令的局限在于,如果主機(jī)是多人管理的環(huán)境,如果大家都用su命令切換至root身份,每個人都需要知道root密碼,非常不安全。
su 和su- 的區(qū)別
su命令和su -命令最大的本質(zhì)區(qū)別就是:
- 前者只是切換了root身份,但Shell環(huán)境仍然是普通用戶的Shell;
- 而后者連用戶和Shell環(huán)境一起切換成root身份了。只有切換了Shell環(huán)境才不會出現(xiàn)PATH環(huán)境變量錯誤
總結(jié)
?????? 好啦,這就是今天要分享給大家的全部內(nèi)容了,我們下期再見!? ? ?
??????如果你喜歡的話,就不要吝惜你的一鍵三連了~文章來源:http://www.zghlxwxcb.cn/news/detail-815368.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-815368.html
到了這里,關(guān)于linux基本功系列之su命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!