ユーザーを切り替えた後に同じ変数データにアクセスするには?たとえば、
artifact=archive.tar.gz
workdir=/home/user
echo "$workdir/$artifact"
sudo -u otheruser bash
echo "$workdir/$artifact"
生産:
/home/user/archive.tar.gz
/
echo
2番目の問題も最初の問題と同じパスで解決できますか?
編集:@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
zsh
代わりにuidとgidの変更をサポートすることもできます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
loginまたはuseと同様に、uid、euid、gid、egid、および補助gidを設定します。 // ...変数を個別にsudo
設定することもできます。UID
EUID
GID