Kiedyś sudoedit
tworzyłem plik:
$ sudoedit /etc/systemd/system/apache2.service
ale kiedy poszedłem zapisać plik, zapisał go w katalogu tymczasowym (/ var / temp / blahblah). Co się dzieje? Dlaczego nie zapisuje go w katalogu systemowym?
Kiedyś sudoedit
tworzyłem plik:
$ sudoedit /etc/systemd/system/apache2.service
ale kiedy poszedłem zapisać plik, zapisał go w katalogu tymczasowym (/ var / temp / blahblah). Co się dzieje? Dlaczego nie zapisuje go w katalogu systemowym?
Odpowiedzi:
Chodzi o sudoedit
to, aby umożliwić użytkownikom edycję plików, do których w innym przypadku nie mieliby pozwolenia, podczas uruchamiania nieuprzywilejowanego edytora. Aby tak się stało, sudoedit
skopiuj plik, który ma być edytowany, do tymczasowej lokalizacji, umożliwi zapisywanie go użytkownikowi żądającemu i otworzy go w skonfigurowanym edytorze. Dlatego edytor pokazuje niepowiązaną nazwę pliku w katalogu tymczasowym. Kiedy edytor kończy działanie, sudoedit
sprawdza, czy rzeczywiście dokonano zmian, i jeśli to konieczne, kopiuje zmieniony plik tymczasowy z powrotem do pierwotnej lokalizacji.
visudo
Z. /etc/sudoers
visudo
za sudoedit
. Wiedziałem, visudo
że to zrobiłem. Dzięki za wyjaśnienie!
Jest to dobrze wyjaśnione na stronie sudo
podręcznika . Opis -e
(który sudoedit
jest równoważny) mówi:
-e
Opcja
-e
(edycja) wskazuje, że zamiast uruchomić polecenie, użytkownik chce edytować jeden lub więcej plików. Zamiast polecenia ciąg „sudoedit
” jest używany podczas sprawdzania polityki bezpieczeństwa. Jeśli użytkownik jest autoryzowany przez zasady, podejmowane są następujące kroki:
- Tworzone są tymczasowe kopie plików, które mają być edytowane przy ustawieniu właściciela na wywołującego użytkownika.
- Edytor określony przez zasadę jest uruchamiany w celu edycji plików tymczasowych.
sudoers
Polityka używaSUDO_EDITOR
,VISUAL
iEDITOR
zmiennych środowiskowych (w tej kolejności). Jeśli żadna zSUDO_EDITOR
,VISUAL
lubEDITOR
są ustawione, pierwszy program wymieniony w edytorzesudoers(5)
opcja jest używana.- Jeśli zostały zmodyfikowane, pliki tymczasowe są kopiowane z powrotem do oryginalnej lokalizacji, a wersje tymczasowe są usuwane.
Jeśli określony plik nie istnieje, zostanie utworzony. Zauważ, że w przeciwieństwie do większości uruchamianych poleceń
sudo
, edytor jest uruchamiany w niezmodyfikowanym środowisku wywołującego użytkownika. Jeśli z jakiegoś powodusudo
nie można zaktualizować pliku w edytowanej wersji, użytkownik otrzyma ostrzeżenie, a edytowana kopia pozostanie w pliku tymczasowym.
W szczególności zwróć uwagę na trzeci krok: tylko jeśli plik został zmodyfikowany pod koniec edycji, oryginał zostanie zmieniony. Tak więc, jeśli masz program, który ogląda plik, może to pomóc uniknąć (a) przechwytywania zapisów pośrednich i (b) niepotrzebnych działań, jeśli zdecydujesz się nie wprowadzać żadnych zmian w końcu.