Dlaczego sudoedit pisze do katalogu tymczasowego?

10

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?

Tyler Durden
źródło

Odpowiedzi:

22

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.

Stephen Kitt
źródło
IIRC niektórzy redaktorzy wykonają również podstawowe testy poprawności poczytalności, aby upewnić się, że nie wprowadzono żadnych zmian w blokowaniu komputera, ale nie jestem pewien, jak często to się dzieje.
Pozew funduszu Moniki
1
@NicHartley: Trudno to zrobić w ogólnym przypadku, ponieważ istnieje tak wiele różnych sposobów zmarnowania komputera. Zwykle zależy od aplikacji, np . visudoZ. /etc/sudoers
Kevin
@Kevin Och, ups, myślę mylić visudoza sudoedit. Wiedziałem, visudoże to zrobiłem. Dzięki za wyjaśnienie!
Pozew Fund Moniki z
1

Jest to dobrze wyjaśnione na stronie sudopodręcznika . Opis -e(który sudoeditjest 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:

  1. Tworzone są tymczasowe kopie plików, które mają być edytowane przy ustawieniu właściciela na wywołującego użytkownika.
  2. Edytor określony przez zasadę jest uruchamiany w celu edycji plików tymczasowych. sudoersPolityka używa SUDO_EDITOR, VISUALi EDITORzmiennych środowiskowych (w tej kolejności). Jeśli żadna z SUDO_EDITOR, VISUALlub EDITORsą ustawione, pierwszy program wymieniony w edytorze sudoers(5)opcja jest używana.
  3. 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ś powodu sudonie 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.


źródło