
切換使用者後如何存取相同的變數資料?例如:
artifact=archive.tar.gz
workdir=/home/user
echo "$workdir/$artifact"
sudo -u otheruser bash
echo "$workdir/$artifact"
生產:
/home/user/archive.tar.gz
/
第二個是否有可能echo
以與第一個相同的路徑解析?
編輯:完整的解決方案,感謝@Romeo Ninov 和@steeldriver:
export artifact=archive.tar.gz
export workdir=/home/user
echo "$workdir/$artifact"
sudo -Eu otheruser bash
echo "$workdir/$artifact"
答案1
導出變數:
export artifact=archive.tar.gz
export workdir=/home/user
答案2
您可能想要使用支援更改 uids 和 gids 的zsh
代替bash
(前提是它以超級使用者權限啟動):
#! /bin/zsh -
id
echo "Original user: $SUDO_USER"
var=test
(
USERNAME=$SUDO_USER
echo "Runing as $(id -un) in this subshell var=$var"
)
(USERNAME=nobody; echo and now:; id; echo $var)
運行為:
$ sudo ./that-script
uid=0(root) gid=0(root) groups=0(root)
Original user: stephane
Runing as stephane in this subshell var=test
and now:
uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
test
設定USERNAME
設定 uid、euid、gid、egid 和補充 gid,就像登入或使用sudo
.您也可以單獨設定UID
// EUID
...GID
變數。