用戶切換
- linux是多用戶的、多進(jìn)程的操作系統(tǒng),通常多個(gè)用戶之間需要來回切換;
- su,switch user 命令
- 參數(shù) - , 切換用戶,同時(shí)切換工作目錄(為目標(biāo)用戶的家目錄)
- 參數(shù) -c cmd,切換到目標(biāo)用戶,執(zhí)行一條指令,然后切回原用戶;
- 參數(shù) -m -p ,保持原用戶的環(huán)境變量;
- 參數(shù) -l,重新登錄該用戶;
- 參數(shù) user,需要切換的用戶
- 命令案例
# 切換到 jack 用戶
su jack # 不切工作路徑
su - jack # 切換工作路徑和環(huán)境變量
# lauf 用戶下 切到root(同時(shí)切工作路徑) 執(zhí)行pwd, 然后切回lauf
su -c pwd - root
# 需要輸入root密碼
?
shell 腳本案例
- root用戶下,執(zhí)行一段shell腳本,中間切換到lauf用戶,在lauf用戶家目錄下 繼續(xù)創(chuàng)建data1、data2數(shù)據(jù)目錄。
#!/bin/bash
# user root
# 創(chuàng)建目錄的函數(shù)
function lauf_make_dir(){
# $@ 所有的參數(shù) 組成數(shù)組
for i in $@;do
# 目錄不存在時(shí) 創(chuàng)建
[[ ! -e $i ]] && mkdir $i
done
[ $? -eq 0 ] && return 0
return 1
}
# root config python PATH
cat /etc/profile | grep -iE "/usr/local/python3/bin"
# 上一條指令沒有成功,則執(zhí)行
[ $? -ne 0 ] && echo 'export PATH=/usr/local/python3/bin:$PATH' >> /etc/profile && \ # 宏延續(xù) 運(yùn)算符
source /etc/profile # 配置文件生效
# 用戶不存在時(shí),創(chuàng)建用戶
cat /etc/passwd | grep -iE "\blauf\b" # 單詞邊界
[ $? -ne 0 ] && useradd lauf -d /home/lauf -m -g root -s /bin/bash
# 切換 用戶,并繼續(xù)執(zhí)行指令
su - lauf <<EOF
# lauf用戶下繼續(xù)執(zhí)行
# array
# arr=("data1" "data2")
# lauf_make_dir ${arr[*]} # 傳入數(shù)組的值 函數(shù)在lauf下找不到
mkdir data1 # CentOS 生效 OpenSuse生效
mkdir data2
EOF # 執(zhí)行結(jié)束 CentOS 自動(dòng)切回root用戶
# OpenSuse 不會(huì)自動(dòng)切回root用戶
# 后面的代碼Cent (root下執(zhí)行的指令)
ls -la ./
root用戶下執(zhí)行shell腳本總結(jié):
-
su - lauf <<EOF 切換用戶,并繼續(xù)執(zhí)行shell指令
- CentOS 下 lauf 用戶執(zhí)行指令到EOF結(jié)束,并自動(dòng)切回root用戶,繼續(xù)執(zhí)行剩下的shell指令;
- OpenSuse下lauf用戶執(zhí)行結(jié)束,不會(huì)自動(dòng)切回root用戶,剩下 的shell指令不會(huì)執(zhí)行;
-
sudo -iu lauf bash << EOF 切換用戶,并繼續(xù)執(zhí)行指令
- CentOS 下lauf用戶執(zhí)行結(jié)束,同樣自動(dòng)切回root;
- OpenSuse 同樣切回root;
- -u 切換普通用戶;-i 切換路徑,同時(shí)使用之前的環(huán)境變量;
- sudo 是權(quán)限受限的su ,需要在/etc/sudoers文件中為用戶配置權(quán)限;
- sudo chmod u+x test.sh 執(zhí)行流程–>切到root用戶執(zhí)行該指令,執(zhí)行結(jié)束切回普通用戶;
-
su - jack -c cmd ; 切換到j(luò)ack 執(zhí)行一條執(zhí)行(jack 具有權(quán)限),切回原用戶;
-
sudo -iu jack bash -c cmd; 執(zhí)行一條指令,然后切回原用戶;文章來源:http://www.zghlxwxcb.cn/news/detail-735164.html
?
?
上一篇: linux shell操作- 02 常用命令及案例文章來源地址http://www.zghlxwxcb.cn/news/detail-735164.html
到了這里,關(guān)于linux shell操作- 03 用戶切換及shell案例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!