sudo, runuser, su funktionieren nicht wie erwartet, wenn sie als Root mit dem Befehl „echo $HOME“ ausgeführt werden.

sudo, runuser, su funktionieren nicht wie erwartet, wenn sie als Root mit dem Befehl „echo $HOME“ ausgeführt werden.

Wenn ich diese Befehle ausführe, wird die folgende Ausgabe ausgegeben: /root

$ sudo -u someuser -i "echo $HOME"
/root
$ runuser -l someuser -c "echo $HOME"
/root    
$ su - someuser -c "echo $HOME"
/root

Was ich erwartet hatte war

/home/someuser

Wenn ich den Befehl „env“ ausführe, um die Umgebung zu überprüfen, wird die HOME-Variable korrekt gemeldet.

$ su - someuser -c "env"
...  
HOME=/home/someuser
...

$ sudo -u someuser -i "env"  
...  
HOME=/home/someuser
...

$ runuser -l someuser -c "env"  
...  
HOME=/home/someuser
...  

Ich möchte Skripte im Home-Verzeichnis des Benutzers ausführen. /home/someuser/scripts.
als ${HOME}/scripts/somescript.sh

$ sudo -u someuser  ${HOME}/scripts/somescript.sh
sudo: /root/scripts/somescript.sh: command not found  

Was ich erwartet hatte war:

$ sudo -u someuser  ${HOME}/scripts/somescript.sh
...
script output.
...

Antwort1

Tangential verwandt:

sudo -u someuser -i "echo $HOME"

funktioniert bei mir überhaupt nicht. Da steht:

-bash: echo $HOME: command not found

Auf den Punkt gebracht: Wenn Sie den Befehl ausführen

sudo -u someuser -i echo $HOME

die Variable $HOMEwird von der Shell erweitert, bevor sudo überhaupt ausgeführt wird.

Um dieses Problem zu lösen, können Sie einen Befehl wie diesen verwenden:

sudo -u someuser -i bash -c 'echo $HOME'

In diesem Befehl echo $HOMEwird nach dem Wechseln der UID buchstäblich an Bash gesendet.

Das Ergebnis ist wie erwartet:

/home/someuser

Antwort2

Wenn Sie das tun

 su - someuser -c "echo $HOME"

DeraktuellShell erweitert $HOMEErste, dann wird das Ergebnis an den Befehl ( suin diesem Fall) und von dort an einen Shell-Prozess weitergegeben, der als neuer Benutzer ausgeführt wird.

Versuchen Sie, die Variable mit einfachen Anführungszeichen zu schützen

 su - someuser -c 'echo $HOME'

verwandte Informationen