pkexec sieht /usr/local/bin nicht

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
buhtz
Beiträge: 1105
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

pkexec sieht /usr/local/bin nicht

Beitrag von buhtz » 18.12.2022 16:19:22

Ich nutze hier Debian 11 (stable).

Code: Alles auswählen

$ pkexec env | grep PATH
PATH=/usr/sbin:/usr/bin:/sbin:/bin:/root/bin
Hier fehlt mir /usr/local/bin im PATH.

Das scheint sich aber auf pkexec zu beschränken. Als sudo su root User ist das Verzeichnis vorhanden.

Code: Alles auswählen

# env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Im Netz habe ich dazu einen Erklärungsansatz gefunden. In dem Verzeichnis befinden sich traditionell weniger vertrauenswürdige Software, z.b. gepatchtes Zeug usw. Daher ist es nahe liegend, natürlich gerade das dann bei pkexec auszuschließen.

Mir ist jetzt nur schleierhaft, wie ich damit umgehen soll, ohne Workarounds/Hacks anzuwenden. Die Lösung muss, auf nahezu alle GNU/Linux laufen.

Hintergrund:
Wenn ich eine Python Anwendung als root per sudo python3 -m pip install foobar installiere und dieses sog. entry-points (startscripte) definiert, landen diese in eben in /usr/local/bin. Natürlich forsche ich auch danach, ob sich das auf Seiten von "pip" ohne Verbiegungen konfigurieren lässt.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

buhtz
Beiträge: 1105
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: pkexec sieht /usr/local/bin nicht

Beitrag von buhtz » 19.12.2022 10:37:40

Mein aktueller Ansatz ist, dass ich vorab ein which foobar ausführe, und dann diesen absoluten Pfad an pkexec übergebe.

Bin nicht sicher, ob das im "Sinne des Erfinders" ist, aber so geht es erstmal.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Benutzeravatar
Livingston
Beiträge: 1434
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: pkexec sieht /usr/local/bin nicht

Beitrag von Livingston » 19.12.2022 20:52:37

Mit

Code: Alles auswählen

$ pkexec env | grep PATH
wird env zwar als root aufgerufen, das geschieht aber nicht über die shell, insbesondere nicht über eine interaktive shell. Deshalb werden auch nicht ~/.profiles oder ~/.bashrc ausgewertet.
Was Du also siehst, ist die exportierte PATH-Variable des ausrufenden Benutzers.
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

Antworten