Jak edytować plik systemowy z sudoEdit, który zachowuje wywołujące środowisko użytkownika

Jak edytować plik systemowy z sudoEdit, który zachowuje wywołujące środowisko użytkownika

W Linux i innych systemach operacyjnych opartych na UNIX Sudo służy do uruchamiania programu z uprawnieniami innego użytkownika, często korzeni. Kiedy musimy zmodyfikować plik, który wymaga edytowania uprawnień administracyjnych, jeśli uruchomimy nasz ulubiony edytor tekstu bezpośrednio z Sudo, będzie on działał bez dostosowywania i ustawień, których używamy, gdy wywołujemy go normalnie, ponieważ środowisko wywołującego użytkownika jest nie zachowane. W tym samouczku zobaczymy, jak możemy łatwo rozwiązać ten problem i jak możemy bezpiecznie modyfikować pliki systemowe za pomocą sudoEdit.

W tym samouczku się nauczysz:

  • Jak edytować plik systemowy za pomocą sudoEdit
  • Jakie są kroki wykonane, gdy plik jest edytowany z sudoedit
  • Jak ustawić domyślny edytor używany przez Sudo

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Niezależny dystrybucja
Oprogramowanie sudo
Inny Nic
Konwencje # - Wymaga, aby podane Linux -commands były wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$-wymaga wykonania Linux-commands jako zwykłego niewidzianego użytkownika

Standardowe zachowanie sudo

Większość rozkładów Linux jest skonfigurowana, aby głównym sposobem osiągnięcia uprawnień głównych jest użycie sudo. Użycie sudo zapewnia nam serię uprawnień Su, Głównym jest to, że konkretne uprawnienia można przyznać jednemu użytkownikowi bez konieczności zapewnienia mu pełnego dostępu.

Sudo można dostosować za pośrednictwem /etc/sudoers plik; Ponieważ ten plik jest bardzo ważny, należy go edytować za pomocą Visudo polecenie, które zapewnia, że ​​nie występują błędy składniowe przed zapisaniem zmian.

W zdecydowanej większości przypadków, gdy polecenie jest uruchamiane z Sudo, wywołujące środowisko użytkownika nie jest zachowane, więc na przykład, jeśli wywołamy nasz edytor za pomocą Sudo do modyfikacji pliku systemowego własnego przez root, uruchomi się ignorując naszą osobistą konfigurację. Może to być dość niewygodne, aw niektórych przypadkach prowadzenie redaktora z eskalowanymi uprawnieniami może stanowić pewne problemy z bezpieczeństwem. Zamiast tego zobaczmy, co możemy zrobić.



Problem: edytor zostaje uruchomiony bez ustawień zdefiniowanych przez użytkownika

Załóżmy, że musimy edytować plik z uprawnieniami administracyjnymi, powiedzmy na przykład /etc/fstab, W tym miejscu przechowywane są statyczne informacje o systemach plików. Jeśli użyjemy naszego ulubionego edytora tekstu i wywołamy go bezpośrednio za pomocą sudo,
Dostosowanie, które ustawiamy na to (zwykle za pomocą odpowiednich plików DOT przechowywanych w naszym DOM katalog) nie zostanie uhonorowany, ponieważ wywołujące środowisko użytkowników nie zostanie zachowane.

Zobaczmy przykład. Powiedzmy, że naszym ulubionym redaktorem jest Vim i w naszym ~/.VIMRC plik wprowadziliśmy Ustaw numer dyrektywa, która powoduje wyświetlanie numerów linii. Jeśli edytujemy /etc/fstab Plik wywołujący edytor bezpośrednio w sudo, widzimy, że ustawienia nie są skuteczne:

$ sudo vim /etc /fstab 

Plik zostanie otwarty w edytorze, a następujące jest to, co zostanie wyświetlone. W tym przypadku zawartość pliku nie ma dla nas znaczenia, więc jest obcięta:

# #/etc/fstab # # Dostępne systemy plików, przez odniesienie, są utrzymywane w ramach „/dev/dysk/”. # Patrz strony Man Fstab (5), Findfs (8), Mount (8) i/lub Blkid (8), aby uzyskać więcej informacji. # # Po edycji tego pliku uruchom „SystemCTL Demon-Reload”, aby zaktualizować jednostki systemowe wygenerowane z tego pliku. # /dev /mapper /fingolfin_vg-root_lv /ext4 domyślne, X-Systemd.Timeout urządzenia = 0 1 1 UUID = B308FBE5-68A6-4142-82DE-BA1DC3380484 /BOOT EXT2 domyślnie 1 2 […] 

Jak widać, numery linii nie są wyświetlane. Powyższe jest tylko przykładem i prawdopodobnie konfiguracje edytora wykraczają daleko poza to. Jak możemy rozwiązać ten problem?

Rozwiązanie: za pomocą sudoedit

Aby rozwiązać problem, który zilustrowaliśmy powyżej, możemy po prostu użyć sudoedit zamiast sudo. Za pomocą sudoedit jest odpowiednikiem wywoływania sudo z -mi opcja, która jest krótka dla --edytować. Jak stwierdzono w sudo Instrukcja, ta opcja zasadniczo oznacza: „Edytuj plik zamiast uruchamiać polecenie”.

Kiedy ta strategia jest używana, a wywołujący użytkownik może wykonywać działanie przez zasady systemowe, zostanie wykonana seria kroków. Przede wszystkim tymczasowy tworzona jest kopia pliku, którą chcemy edytować. Plik tymczasowy będzie własnością wywołującego użytkownika, więc nie będą wymagane żadne uprawnienia administracyjne, aby go zmodyfikować.

Plik tymczasowy zostanie otwarty w domyślnej edytora tekstu. Domyślny edytor jest ustawiany za pomocą niektórych zmiennych, które są odczytywane w określonej kolejności. Oni są:

  1. Sudo_editor
  2. WIZUALNY
  3. REDAKTOR

W zależności od rozkładu i powłoki, której używamy, wartość tych zmiennych można na stałe ustawić w ~/.bash_profile (pochodzący tylko przez powłokę bash) lub ~/.profil plik. Ustawić krzepa Na przykład jako nasz domyślny edytor napisałbyśmy:

Eksport sudo_editor =/usr/bin/vim 



Zauważ, że użyliśmy eksport powłoka wbudowana przed definicją zmienną: konieczne jest wyeksporowanie samej zmiennej do wszystkich procesów dziecięcych powłoki. Zmiany nie będą od razu skuteczne: powinniśmy się wylogować i zalogować ponownie,
lub źródło zmodyfikowanego pliku „ręcznie”:

$ źródło ~/.bash_profile 

Jeśli żadna z tych zmiennych nie jest ustawiona, pierwszy edytor określony jako wartość redaktor opcja w pliku Sudoers (/etc/sudoers) będzie użyty.

Po zapisaniu pliku, który zmodyfikowaliśmy (zostanie utworzony od zera, jeśli już nie istnieje), a edytor zostanie zamknięty, zostanie skopiowany z powrotem do pierwotnej pozycji, a plik tymczasowy zostanie usunięty. Użytkownik zostanie poproszony
Potwierdź działanie, jeśli edytowany plik stanie się pusty; Jest to dodatkowy i bardzo użyteczny środek bezpieczeństwa, który może zapobiec katastrofalnym błędom:

sudoedit: obcięty /etc /fstab do zero bajtów? (y/n) [n] n sudoedit: nie nadpisanie/etc/fstab 

Odkąd podczas korzystania sudoedit zamiast sudo Środowisko wywołującego użytkownika jest zachowane, a plik jest edytowany jako sam użytkownik, a nie jako root, będziemy mogli korzystać z naszego edytora z całkowitymi ustawionymi przez nas dostosowywaniem, uwzględnionymi załadowanymi wtyczkami.

Wnioski

W tym samouczku dowiedzieliśmy się, jak można edytować plik, który wymaga modyfikacji uprawnień administracyjnych przy jednoczesnym utrzymaniu wywoływania środowiska użytkownika za pomocą sudoEdit zamiast sudo. Widzieliśmy, jakie są zalety tego podejścia, jakie są kroki wykonane podczas jego przyjęcia i jak ustawić domyślny edytor używany przez Sudo.

Powiązane samouczki Linux:

  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Mastering Bash Script Loops
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Obsługa danych wejściowych użytkownika w skryptach Bash
  • Jak usunąć bluatware z Samsung Android Mobile…
  • Hung Linux System? Jak uciec do wiersza poleceń i…
  • Jak utworzyć konto modyfikowania i usuwania użytkowników w systemie Linux