Czy jest jakiś sposób na określenie, które sudo
powinny zachować pewne zmienne środowiskowe tylko dla określonych poleceń? Do niektórych celów chciałbym mojej $HOME
env. zmienna zachowana po uruchomieniu niektórych poleceń. Do innych celów i innych poleceń chcę go zresetować. Czy można to zrobić /etc/sudoers
?
Edytować:
Dziękuję za odpowiedzi. Zastanawiam się, czy mógłbym zadać dalsze pytanie, które brzmi: „Dlaczego więc to nie działa?”.
W przykładzie, który próbuję rozpocząć, chcę sudo nano
przeczytać mój $HOME/.nanorc
. Jeśli użyję tego:
Defaults:simon env_keep=HOME
działa idealnie. Jeśli użyję tego:
Defaults!/bin/nano env_keep=HOME
albo to:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
to w ogóle nie działa. Wszelkie sugestie, dlaczego? (Jestem na testach Debiana, btw.)
(Uwaga: nie wydaje mi się, żeby było to nano
specyficzne, btw - mogę odtworzyć zachowanie za pomocą jednowierszowego skryptu bash, który po prostu echo
s $HOME
).
sudoedit
zamiast tego.sudoedit
uruchomi skopiuj zawartość pliku do pliku tmp i uruchomi wybrany przez ciebie edytor jako użytkownik, gdy edytor wyjdzie, sprawdzi, czy coś zmieniłeś, a jeśli tak, zamień oryginał na edytowany. Możesz wybrać edytor, który ma być uruchamiany, ustawiając$EDITOR
zmienne env lub $ VISUAL`.sudo
swoją własną funkcję, po prostu dodałemif [ "$1" == "$EDITOR" ]; then
blok i teraz dzwonięsudoedit
:)Odpowiedzi:
Aby zastąpić
env_keep
tylko dla/path/to/command
(wywołanego przez dowolną regułę, przez dowolnego użytkownika) i dla użytkownikajoe
(bez względu na to, jaką komendę wykonuje):Możesz użyć
-=
lub,+=
aby usunąć lub dodać wpis doenv_keep
listy.źródło
man
stronie, i czuję się trochę głupio. Bez wątpienia ta odpowiedź pomoże jednak także innym.sudoers
stronie podręcznika jest trudny do wypracowania na podstawie opisu formalnego, a przykłady łatwiej znaleźć, jeśli już wiesz, jak je napisać.env_keep
ustawienia (simon ALL = ALL
). Sudo używa ostatniego pasującego wpisu.Linie te są z własną rękę
/etc/sudoers
, aby rozwiązać ten problem, żepbuilder
wygląda w$HOME
jego pliku konfiguracyjnym użytkownika, ale musi być uruchamiany jako root (przesuwając go/root
troche pokonuje celem posiadające zarówno system i plik konfiguracyjny użytkownika).źródło
sudoers człowiek:
Dlatego tak, można to zrobić za pomocą
env_reset
,env_keep
aenv_check
w pliku / etc / sudoers.źródło