在我們日常運維中,在一個用root權限執行的腳本中,需要經常切換到不同用戶執行對應的命令,因此如下總結了如何在root用戶有執行權限的腳本中如何切換到不同用戶執行對應的命令或者腳本的幾種方式:
1. su - user -c 'command' # 單獨一條命令有沒有單引號或者雙引號包裹都可以
ex: su - zzl -c 'whoami'
2. su - user -c ' # 多條命令用單引號或雙引號包裹,如果要對命令輸出進行賦值,那麼只能用單引號
command1
command2
'
ex:
su - zzl -c '
free -m
user=$(whoami)
echo $user
'
3. su - user -s /bin/bash script.sh
ex: su - zzl -s /bin/bash /home/zzl/a.sh
4. su - user <<EOF #這個方式,不能對命令的輸出進行賦值
command1
command2
EOF
ex:
su - zzl << EOF
whoami
free -m
EOF
whoami
#下面這樣寫$user不會有輸出
ex:
su - zzl << EOF
user=$(whoami)
echo $user
free -m
EOF
whoami