Was macht `sudo` mit der home-Verzeichnis-Variable? [Gelöst]

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Was macht `sudo` mit der home-Verzeichnis-Variable? [Gelöst]

Beitrag von jmar83 » 18.10.2019 10:10:54

Hallo zusammen

Gegeben sei ein Skript, welches `~` enthält, um die home-Variable herauszufinden. Dieses befindet sich in einem Skript unter /home/myuser/... gleichzeitig ist es noch so, dass das Skript (teilweise) root-Rechte (über sudo, und der Benutzer "myuser" wäre ein sudoer!) braucht.

- Wenn ich mich nun als "myuser" einlogge, und dann `sudo echo ~` eingebe, dann erhalte ich als Ausgabe `/home/myuser`

- Wenn ich nun in einem Shell-Skript das Zeichen `~` verwende, dann wird plötzlich `/root` draus. (WTF??):

Code: Alles auswählen

Im Skript:
`cd ~/deployment/Temp/X2_CPP;`

... daraus wird in der Konsole das hier:
+ cd /root/deployment/Temp/X2_CPP
./compile.sh: Zeile 12: cd: /root/deployment/Temp/X2_CPP: Datei oder Verzeichnis nicht gefunden

Hier habe ich gelesen dass man unter `/etc/sudoers` die Option `env_keep` verwenden kann (Vorgabe war übrigens `env_reset`): https://unix.stackexchange.com/question ... s-behavior - funktioniert aber so nicht...

Weiss jemand, was das soll?? In der Konsole geht's ja und es wird mir `/home/myuser` ausgegeben... im Shell-Skrips (Bash-Header) dann allerdings nicht mehr, dort wird plötzlich wieder `/root` draus.

Vielen Dank für die Feedbacks.
Zuletzt geändert von jmar83 am 09.12.2019 16:30:13, insgesamt 1-mal geändert.
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Was macht `sudo` mit der home-Verzeichnis-Variable?

Beitrag von jmar83 » 18.10.2019 10:30:08

Mail erhalten aber doch keine Antwort hier im Forum...?
"du erhältst diese Benachrichtigung, weil du das Thema „Was macht `sudo` mit
der home-Verzeichnis-Variable?“ auf „debianforum.de“ abonniert hast. Seit
deinem letzten Besuch wurde zu diesem Thema eine neue Antwort von TomL
erstellt. Du erhältst keine weitere Benachrichtigung, bis du das Thema
besucht hast."
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Was macht `sudo` mit der home-Verzeichnis-Variable?

Beitrag von jmar83 » 18.10.2019 11:17:35

...da kann man machen was man will, `who`, `whoami`, `$USER`, `su`, `sudo`, was auch immer - immer das gleiche Resultat:

- Shell Skript: gibt /root/... aus
- Konsole: gibt /home/myuser... aus
Freundliche Grüsse, Jan

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Was macht `sudo` mit der home-Verzeichnis-Variable?

Beitrag von jmar83 » 18.10.2019 13:12:18

Nun habe ich es halt auf die "billige" Tour gelöst - nur dort wo wirklich sudo gebraucht wird im Skript wird auch sudo eingesetzt - na ja...

*bastel*, *bastel* ;-)
Freundliche Grüsse, Jan

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Was macht `sudo` mit der home-Verzeichnis-Variable?

Beitrag von smutbert » 18.10.2019 16:44:28

wenn ich einmal mutmaßen darf:

In der (User-)Shell wird bei der Eingabe von

Code: Alles auswählen

sudo echo ~
das ~ gleich durch den Pfad des Homeverzeichnisses ersetzt, also noch bevor sudo zum Zug kommen könnte und sich die Bedeutung von ~ oder ${HOME} ändern könnte.

Bei einem Skript, das du mit sudo aufrufst (?) wird dagegen das ~ in der root-Umgebung ersetzt und dann natürlich durch /root und nicht das Homeverzeichnis eines anderen Benutzers.

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Was macht `sudo` mit der home-Verzeichnis-Variable?

Beitrag von jmar83 » 18.10.2019 18:33:01

Vielen Dank für deinen Beitrag!

Für mich sieht das wie ein Bug aus, ganz ehrlich gesagt!!
Freundliche Grüsse, Jan

DeletedUserReAsG

Re: Was macht `sudo` mit der home-Verzeichnis-Variable?

Beitrag von DeletedUserReAsG » 18.10.2019 18:35:35

jmar83 hat geschrieben: ↑ zum Beitrag ↑
18.10.2019 10:10:54
Gegeben sei ein Skript, welches `~` enthält, um die home-Variable herauszufinden.
Gehauen sei dem Autor das um die Ohren. Macht man nicht, um’s Homeverzeichnis zu finden, gibt’s andere Möglichkeiten.

Benutzeravatar
Phineas
Beiträge: 348
Registriert: 20.06.2012 20:26:19

Re: Was macht `sudo` mit der home-Verzeichnis-Variable?

Beitrag von Phineas » 19.10.2019 08:30:43

jmar83 hat geschrieben: ↑ zum Beitrag ↑
18.10.2019 18:33:01
Vielen Dank für deinen Beitrag!

Für mich sieht das wie ein Bug aus, ganz ehrlich gesagt!!
Nein, das ist kein Bug, sondern nur etwas um die Ecke zu verstehen. Smutbert hat völlig Recht: Zuerst ersetzt die Shell, was zu ersetzen ist, danach erst kommen die Befehle zum Zuge. (Mal davon ab, dass echo ein Shell-Builtin ist und 'sudo echo' also sowieso ins Leere laufen sollte, da die Shell weiterhin mit Userrechten läuft.)
Die komplette Shell mit Rootrechten aufrufen und dann erst die Tilde auflösen lassen, sollte Klarheit bringen:

Code: Alles auswählen

sudo bash -c 'echo ~'

jmar83
Beiträge: 962
Registriert: 20.06.2013 20:20:15
Wohnort: CH
Kontaktdaten:

Re: Was macht `sudo` mit der home-Verzeichnis-Variable?

Beitrag von jmar83 » 19.10.2019 22:10:27

Vielen Dank!!
Freundliche Grüsse, Jan

Antworten