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+=EDITOR
lub 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 -E
lub nawetalias sudo='sudo -E'
: Pokonuje cel posiadaniaenv_reset
a 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 visudo
wciąż 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) editor
sprawdza $ EDITOR, ale jeśli działasudo visudo
,sudo
nie ustawia $ EDITOR, więc kiedyvisudo
biegnie 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
VISUAL
pierwszeństwo przedEDITOR
. Myślałem, że jestemEDITOR
zmienna była właśnie ignorowana. Okazuje się, że w Centos7 obaEDITOR
iVISUAL
domyślniepico
.