web-dev-qa-db-fra.com

Exécuter le script Sudo Bash en tant qu'autre utilisateur tout en étant root

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?

1
Jaid

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.

0
filbranden