
Wie kann ich nach einem Benutzerwechsel auf dieselben Variablendaten zugreifen? Beispiel:
artifact=archive.tar.gz
workdir=/home/user
echo "$workdir/$artifact"
sudo -u otheruser bash
echo "$workdir/$artifact"
Produziert:
/home/user/archive.tar.gz
/
Ist es möglich, dass der zweite echo
im selben Pfad wie der erste aufgelöst wird?
Bearbeiten: Komplette Lösung, danke an @Romeo Ninov und @steeldriver:
export artifact=archive.tar.gz
export workdir=/home/user
echo "$workdir/$artifact"
sudo -Eu otheruser bash
echo "$workdir/$artifact"
Antwort1
Exportieren Sie die Variablen:
export artifact=archive.tar.gz
export workdir=/home/user
Antwort2
zsh
Sie können anstelle von Folgendes verwenden: bash
Das Programm unterstützt das Ändern von UIDs und GIDs (vorausgesetzt, es wird mit Superuser-Berechtigungen gestartet):
#! /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)
Wird ausgeführt als:
$ 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
Die Einstellung USERNAME
legt die uid, euid, gid, egid und zusätzlichen gids fest, als ob Sie sich anmelden oder verwenden würden sudo
. Sie können die Variablen UID
/ EUID
/ GID
... auch einzeln festlegen.