Je suis connecté en tant que root et je souhaite exécuter un script Bash avec les autorisations Sudo en tant qu'autre utilisateur.
Voici le script de test Bash dans /home/me/Sudo.bash
:
mkdir -p /etc/test # Creating an /etc directory to test permissions
echo "test $(whoami) $USER $HOME" > /etc/test/a.txt
La commande que j'ai actuellement (exécutez depuis la racine, exécutez pour moi):
Sudo --non-interactive --login --set-home --user=me \
Sudo --non-interactive bash /home/me/Sudo.bash
Contenu de /etc/test/a.txt
:
test root root /home/me
Ce que j'attendais:
test me me /home/me
Qu'est-ce que je fais mal ici?
On s'attend à ce que $(whoami)
renvoie "root", car il s'exécute en tant que root en raison du second Sudo
.
De plus, $USER
renverra "racine" car Sudo
définit toujours cette variable sur l'utilisateur cible (qui, encore une fois, est la racine du deuxième Sudo.)
Si vous voulez savoir quel utilisateur a invoqué Sudo
, ce qui serait "moi" dans le cas de la deuxième Sudo
, consultez la variable $Sudo_USER
, qui Sudo
définit à l'utilisateur qui l'a appelé.
Voir Sudo_USER et USER dans la section "Environnement" de la page de manuel Sudo
.