Używam serwera Ubuntu 10.04 i próbuję skonfigurować sudoers, aby szanować wybór EDYTORA użytkownika (w granicach)
W moich sudoerach mam:
Defaults editor=/usr/bin/nano:/usr/bin/vim
Defaults env_reset
A w użytkowniku .bashrc:
export EDITOR=/usr/bin/vim
Ustawiono $ EDITOR:
$ echo $EDITOR
/usr/bin/vim
Według man sudoers powinno to wystarczyć, aby $ EDITOR został ustawiony na vim:
editor A colon (':') separated list of editors allowed to be used with visudo.
visudo will choose the editor that matches the user's EDITOR environment
variable if possible, or the first editor in the list that exists and is
executable. The default is the path to vi on your system.
jednak nano jest nadal używany dla tego użytkownika. Szybkie sprawdzenie Env:
$ sudo -- env | grep EDITOR
Zwraca nic.
$ sudo -E -- env | grep EDITOR
Zwraca EDITOR=/usr/bin/vim
Wiem, że mogłem wykonać następujące czynności, aby praca EDITORA:
- Zestaw
env_editor,env_keep+=EDITORlub dowolna inna opcja, która utrzymuje zmienną EDITOR w sudoers: Nie chcę tego robić, ponieważ może to umożliwić dowolne wykonanie czegokolwiek (np.export EDITOR=~/bad_program_to_run_as_root) - Posługiwać się
sudo -Elub nawetalias sudo='sudo -E': Pokonuje cel posiadaniaenv_reseta użytkownicy bez SETENV (nie coś, co chcę rozdać: patrz poprzedni punkt)sudo: sorry, you are not allowed to preserve the environment - Zestaw
editor=/usr/bin/vim: Ale są inni użytkownicy, którzy nie znają vima - Posługiwać się
sudo select-editor: Zamknij, alesudo visudowciąż się otwieranano - Po prostu użyj sudoedit lub vim bezpośrednio: Ale wtedy tracisz bezpieczeństwo narzędzi takich jak
visudo,vipw,crontab -e. - Zajmij się tym: Prawdopodobnie, ale jeśli brakuje mi jakiegoś wglądu, chciałbym to wiedzieć
Próbowałem również ustawić VISUAL i SUDO_EDITOR zmienne (w desperacji)
Czy jest coś, za czym tęskniłem? sudo visudo otwarty w wybranym edytorze użytkowników, bez kompromisów powyżej?
EDYTOWAĆ:
Myślę, że rozumiem, dlaczego to nie działa tak, jak się tego spodziewam. Odkładam to tutaj na wypadek, gdyby ktoś inny miał to samo nieporozumienie.
W pliku sudoers
Defaults editor=/usr/bin/nano:/usr/bin/vim
- Dotyczy tylko listy edytorów, które są dozwolone podczas uruchamiania
visudo(nie jakikolwiek inny program) editorsprawdza $ EDITOR, ale jeśli działasudo visudo,sudonie ustawia $ EDITOR, więc kiedyvisudobiegnie będzie pusty- Dlatego w tym przypadku używany jest pierwszy edytor
nano
Czy ktoś może potwierdzić, że jest to poprawne?
Spodziewałem się zatem, że bezpiecznym rozwiązaniem byłoby dodanie:
Defaults!/usr/sbin/visudo env_keep+=EDITOR
tj. utrzymuj EDITORA jeśli i tylko wtedy, gdy uruchomisz visudo. Zostanie to sprawdzone
Defaults editor=/usr/bin/nano:/usr/bin/vim
A jeśli nie pasuje, to użyje nano
Dziwnie jednak nie wygląda to tak:
$ sudo su - root
# export EDITOR=/bin/echo
# visudo
/etc/sudoers.tmp
visudo: /etc/sudoers.tmp unchanged
/bin/echo jest używany jako edytor. Pluskwa? Lub inne nieporozumienie?
Dzięki
VISUALpierwszeństwo przedEDITOR. Myślałem, że jestemEDITORzmienna była właśnie ignorowana. Okazuje się, że w Centos7 obaEDITORiVISUALdomyślniepico.