2013-09-11 9 views
5

Scheint mir, wenn ich ein Shell-Skript in $HOME/path/to/script/myscript und export PATH=$PATH:$HOME/path/to/script/ dann sudo -E myscript sollte das Skript richtig ausführen?sudo E Option funktioniert nicht?

From sudo man page:

-E Die -E (konservieren Umwelt) Option zeigt die Sicherheitsrichtlinie, die die Benutzer ihre vorhandenen Umgebungsvariablen erhalten wollen. Die Sicherheitsrichtlinie gibt möglicherweise einen Fehler zurück, wenn die Option -E angegeben wurde und der Benutzer nicht berechtigt ist, die Umgebung zu schützen.

Aber sudo -E script kann den Befehl nicht finden. Ich weiß, dass ich einfach /absolute/path/to/script/ zu den Dateien hinzufügen kann, die die PATH Variable für sudo env bestimmen, aber das ist nicht der Ansatz, den ich nehmen möchte.

die Kommentare zu adressieren:
@ H2CO3: Ich habe sudo sudo um das Netz schwimmend gesehen, und es nervt mich enorm, es ist buchstäblich „Gib mir Superuser-Berechtigungen Super-User laufen“ zu sagen. Ich weiß nicht, ob es das Problem lösen würde, aber es scheint ein grundlegend fehlerhafter Ansatz zu sein. Dann wieder begann ich Mitte der 90er Jahre damit, Linux/BSD-Systeme zu verwenden, so dass ich nur den Befehl sudo selbst beanstandete.
@rici: Das Skript ausführbare Berechtigungen verfügt, aber das ist auf jeden Fall etwas zu überprüfen, wenn etwas in * nix-Systemen läuft nicht =)

+0

Vielleicht braucht es mehr Berechtigungen ... probiere 'sudo sudo' ... Naja ... –

+0

Hast du sichergestellt, dass deine Skriptdatei ausführbar ist? – rici

+0

Die meisten Distributionen von Linux/Unix benötigen CLI nicht länger, um eine "General Computing" -Task auszuführen. Nur weil sudo für das allgemeine Computing verwendet werden kann, ist es nicht der Hauptzweck dieses Tools. Python kann (und wurde oft) als Taschenrechner verwendet werden, aber es ist offensichtlich keine "allgemeine Computersoftware". Ich benutze sudo, um Tools auszuführen, die ausschließlich für die Entwicklung nützlich sind, und Skripte, die ich geschrieben habe. Daher bitte ich Sie, entweder den Inhalt von http://stackoverflow.com/help/on-topic, http://superuser.com/help/on-topic, oder Ihre Entscheidung, diese Frage als aus zu markieren, erneut zu bewerten Thema. – MishaP

Antwort

8

/etc/sudoers standardmäßig hat eine Einstellung, um die Umgebung zu setzen. Definiert außerdem einen Standardsicherheitspfad, der beim Ausführen von sudo -E [cmd] wirksam ist.

Sie müssen die Datei/etc/sudoers bearbeiten und 'env_keep' hinzufügen und die Variablen angeben, die Sie beibehalten möchten.

Standard env_keep + = "PATH"

aber vor diesem Kommentar aus der secure_path Linie. Dann versuche deinen Befehl über sudo -E.

+3

'Kommentieren Sie die secure_path-Zeile' das hat den Trick geschafft, danke! – MishaP

Verwandte Themen