Gibt es eine Möglichkeit, anzugeben, dass sudo
bestimmte Umgebungsvariablen nur für angegebene Befehle beibehalten werden sollen? Für einige Zwecke möchte ich mein $HOME
env. Variable, die beim Ausführen bestimmter Befehle beibehalten wird. Für andere Zwecke und andere Befehle möchte ich es zurücksetzen. Kann man damit fertig werden /etc/sudoers
?
Bearbeiten:
Vielen Dank für die Antworten. Ich frage mich, ob ich eine Folgefrage stellen könnte: "Warum funktioniert das dann nicht?"
In dem Beispiel, in dem ich versuche zu arbeiten, möchte sudo nano
ich meine lesen $HOME/.nanorc
. Wenn ich das benutze:
Defaults:simon env_keep=HOME
es funktioniert einwandfrei. Wenn ich das benutze:
Defaults!/bin/nano env_keep=HOME
oder dieses:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
es funktioniert überhaupt nicht. Irgendwelche Vorschläge, warum? (Ich bin übrigens bei Debian-Tests.)
(Anmerkung: Ich denke nicht, dass es nano
spezifisch ist, übrigens - ich kann das Verhalten mit einem einzeiligen Bash-Skript reproduzieren, das einfach echo
s ist $HOME
).
sudoedit
stattdessen.sudoedit
Kopiert den Inhalt einer Datei in eine tmp-Datei und führt den Editor Ihrer Wahl als Benutzer aus. Wenn der Editor beendet wird, wird überprüft, ob Sie etwas geändert haben, und in diesem Fall wird das Original durch das bearbeitete ersetzt. Sie können auswählen, welcher Editor ausgeführt werden soll, indem Sie die Umgebungsvariablen$EDITOR
oder $ VISUAL` einstellen.sudo
eine eigene Funktion verwende, habe ich einfach einenif [ "$1" == "$EDITOR" ]; then
Block hinzugefügt und rufe jetztsudoedit
stattdessen auf :)Antworten:
Überschreiben
env_keep
nur für/path/to/command
(wenn durch eine Regel von einem Benutzer aufgerufen) und für den Benutzerjoe
(unabhängig davon, welchen Befehl er ausführt):Sie können verwenden
-=
oder+=
einen Eintrag in die entfernen oder hinzufügenenv_keep
Liste.quelle
man
Seite heraus hätte herausarbeiten sollen , und ich fühle mich ein bisschen dumm. Zweifellos wird diese Antwort auch anderen helfen.sudoers
Manpage aus der formalen Beschreibung herauszuarbeiten und die Beispiele leichter zu finden, wenn Sie bereits wissen, wie man sie schreibt.env_keep
Einstellung nicht hat (simon ALL = ALL
). Sudo verwendet den letzten passenden Eintrag.Diese Zeilen stammen von mir
/etc/sudoers
, um das Problem zu beheben,pbuilder
bei dem$HOME
nach der Benutzerkonfigurationsdatei gesucht wird, die jedoch als Root ausgeführt werden muss (das Verschieben in eine/root
andere Zeile hat den Zweck, sowohl eine System- als auch eine Benutzerkonfigurationsdatei zu haben).quelle
Mann sudoers:
Deshalb ja, können Sie tun , dass die Verwendung
env_reset
,env_keep
undenv_check
in / etc / sudoers.quelle