Odpowiedzi:
Dodanie Defaults editor=/path/to/editor
pliku sudoers spowoduje, że visudo użyje określonego edytora do zmian.
Dodatkowo, jeśli twój pakiet sudo został zbudowany za pomocą --with-env-editor, tak jak jest to domyślne w niektórych dystrybucjach Linuksa, możesz również ustawić zmienną środowiskową EDITOR, wykonując export EDITOR=/path/to/editor
. Wykonane w wierszu poleceń, zostanie cofnięte, gdy tylko sesja powłoki zostanie zakończona, ustawienie zmiennej w profilu ~ / .bashrc lub / etc / spowoduje, że zmiana zostanie utrzymana.
visudo
honoruje się $VISUAL
i $EDITOR
?
--with-env-editor
, ostatnio tutaj oznacza to w pamięci Internetu. Dodatkowo jakiś pakiet sudo zmienił już jakiś czas domyślny, tak aby używać vi jako domyślnego edytora, co moim zdaniem zbiegło się ze zmianą zachowania w zakresie akceptacji zmiennych środowiskowych. Nie mam jasnego harmonogramu tego, w jaki sposób, kiedy lub czy te wydarzenia odnoszą się obecnie do siebie.
Następujące
alternatives
(pierwotnie tylko Debian i jego forks, ale teraz większość głównych dystrybucji, IIUC).ma tę zaletę, że
sudoers
najpierw edytować w domyślnym edytorzesudo
ma nie został zbudowany z--with-env-editor
Z wiersza poleceń:
sudo update-alternatives --config editor
sudo visudo
powinien teraz otworzyć wybrany edytor.
Normalny program uniksowy, który chce wywołać edytor, uruchomi program, którego nazwa znajduje się w zmiennej środowiskowej EDITOR
lub VISUAL
, a jeśli zmienna nie jest ustawiona, domyślna zależna od systemu. Wiele programów, ale nie wszystkie, sprawdzają zarówno, jak EDITOR
i VISUAL
; rozróżnienie jest dawno przestarzałe (po uruchomieniu EDITOR
na teletype i VISUAL
na „szklanym” terminalu…), więc powinieneś ustawić obie te same wartości. Istnieje pewna różnica zdań co do tego, czy zawartość zmiennej powinna być pełną ścieżką do pliku wykonywalnego, szukanej nazwy pliku wykonywalnego $PATH
lub fragmentu powłoki, więc powinieneś trzymać się ścieżki do pliku wykonywalnego nie zawierającego metaznaku powłoki. Domyślne ustawienie systemowe, gdy żadna zmienna nie jest ustawiona, jest tradycyjnievi
, choć niektóre dystrybucje zmieniły to na bardziej przyjazny dla początkujących edytor, taki jak nano
.
visudo
sprawdza oba VISUAL
i EDITOR
(można to skompilować, prawdopodobnie w celu zniechęcenia roota do używania edytora, którego bezpieczeństwu twórca dystrybucji nie ufa, ale nawet OpenBSD tego nie robi).
Te kroki pozwalają mi ustawić edytor na vi dla visudo na Ubuntu 12.04, prawdopodobnie działają one w większości dystrybucji:
Polecenie wydania:
sudo visudo
Spowoduje to otwarcie pliku sudoers w nano. U góry zobaczysz tę linię:
Defaults env_reset
Dodaj następujący wiersz poniżej powyższego wiersza:
Defaults editor=/usr/bin/vi
Zapisz plik i wyjdź. Otwórz ponownie visudo jako domyślny użytkownik:
sudo visudo
Plik sudoers otwiera się teraz w VI.