사용자를 전환한 후 동일한 변수 데이터에 액세스하는 방법은 무엇입니까? 예를 들어:
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
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