GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann man `sudo` dazu bringen, $path beizubehalten?

Ich habe ein Programm, das in einem benutzerdefinierten Verzeichnis unter /opt installiert ist. Um die Ausführung zu vereinfachen, habe ich meine bashrc bearbeitet, um das besagte Verzeichnis zu meinem Pfad hinzuzufügen:

export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin

Dies funktioniert gut, wenn ich das Programm ohne sudo ausführen möchte. Wenn ich jedoch versuche, es mit sudo auszuführen, schlägt es mit einem „Befehl nicht gefunden“-Fehler fehl.

$ sudo godi_console
sudo: godi_console: command not found

Die Überprüfung der PATH-Variablen nach der Verwendung von sudo zeigt, dass sie nicht denselben PATH enthält, den ich als normaler Benutzer habe:

$ sudo sh
# echo $PATH                 
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Warum ist der PATH nicht derselbe? Mache ich etwas falsch? Ich bin auf Debian Jessie, falls es einen Unterschied macht.

Eine Sache, die ich versucht habe, war, /opt/godi/sbin/godi_console direkt aufzurufen und den absoluten Pfad zur ausführbaren Datei zu übergeben. Leider hat das in diesem speziellen Fall nicht geholfen, da godi_console selbst davon abhängig ist, dass der PATH richtig gesetzt ist.

Akzeptierte Antwort:

Sie können immer:

sudo env "PATH=$PATH" godi_console

Als Sicherheitsmaßnahme unter Debian, /etc/sudoers hat den secure_path Option auf einen sicheren Wert gesetzt.

Beachten Sie Folgendes:

sudo "PATH=$PATH" godi_console

Wobei sudo behandelt führende Argumente, die = enthalten Zeichen als Umgebungsvariablenzuweisungen selbst, würde auch beim Ausführen von godi_console funktionieren mit Ihrem $PATH (im Gegensatz zum secure_path ) in seiner Umgebung, würde aber sudo nicht beeinflussen ’s Suchpfad nach ausführbarer Datei, also würde sudo nicht helfen beim Finden dieser godi_console .


Linux
  1. So richten Sie vHosts in Apache ein

  2. Wie fügt man sauber zu $path hinzu?

  3. Wie lässt sich ein Skript rückwirkend als Root ausführen?

  4. Wie macht man eine Datei spärlich?

  5. Wie kann ich dir $PATH in Makefile hinzufügen?

So fügen Sie ein Verzeichnis zu PATH in Linux hinzu

Wie man sudo dazu bringt, sich das Passwort länger zu merken

Wie man eine Datei unter Linux ausführbar macht

So machen Sie einen Benutzer zum Administrator in Ubuntu

Wie bringe ich sudo dazu, nach dem Root-Passwort zu fragen?

Wie können Shared Keys .ssh/authorized_keys und sudo zusammenarbeiten?