Kiedyś sudoedittworzył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ś sudoedittworzył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 sudoeditto, 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, sudoeditskopiuj 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, sudoeditsprawdza, czy rzeczywiście dokonano zmian, i jeśli to konieczne, kopiuje zmieniony plik tymczasowy z powrotem do pierwotnej lokalizacji.
visudoZ. /etc/sudoers
visudoza sudoedit. Wiedziałem, visudoże to zrobiłem. Dzięki za wyjaśnienie!
Jest to dobrze wyjaśnione na stronie sudopodręcznika . Opis -e(który sudoeditjest równoważny) mówi:
-eOpcja
-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.
sudoersPolityka używaSUDO_EDITOR,VISUALiEDITORzmiennych środowiskowych (w tej kolejności). Jeśli żadna zSUDO_EDITOR,VISUALlubEDITORsą 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ś powodusudonie 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.