Zmiany wprowadzone w plikach /etc/sudoers.d
pozostaną na miejscu po uaktualnieniu systemu. Może to zapobiec blokowaniu użytkownika podczas aktualizacji systemu. Ubuntu lubi to zachowanie. Inne dystrybucje również używają tego układu.
Z mojego doświadczenia wynika, że zasady dotyczące plików w tym katalogu są luźniejsze niż w przypadku /etc/sudoers
. Obejmuje to:
- Błędy w pliku nie spowodowały
sudo
niepowodzenia. Plik został jednak zignorowany.
- Zasady wydawania uprawnień wydają się mniej surowe. Umożliwia odpowiedniej grupie lub innej osobie odczytanie pliku. Nie sądzę, żeby było to możliwe
/etc/sudoers
. Aby root
zachować bezpieczeństwo, należy ograniczyć uprawnienia do zapisu . Obecna wersja sudo Ubuntu pozwala na uprawnienia do odczytu dla grupy lub innej. (Ta funkcja umożliwia kontrolę dostępu sudo za pomocą bez konieczności dostępu do konta root.)
visudo
Komenda tylko domyślnie /etc/sudoers
. Będzie edytować i weryfikować dowolny plik określony za pomocą -f
opcji. Korzystam z tej możliwości, aby edytować pliki, które zostaną automatycznie zainstalowane jako /etc/sudoers
lub w /etc/sudoders.d
. Jednak definicje z innych plików mogą nie zostać znalezione. Najlepiej jest uniezależnić plik.
Możliwość posiadania plików autonomicznych ułatwia aplikacji włączenie sudo
funkcji instalacji i usunięcie ich po odinstalowaniu. Zautomatyzowane narzędzia konfiguracyjne mogą również korzystać z tej możliwości.
Wykorzystałem tę możliwość do wyodrębnienia zmian wymaganych do przyznania dostępu do określonych grup użytkowników w określonych systemach.
sudo
niepowodzenia”. Złamałem sudo na RHEL z niepoprawną składnią w pliku z /etc/sudoers.d. To wymagało znacznego wysiłku, aby to naprawić i myślę, że zaleca się, aby zawsze używaćvisudo -f
do edycji tych plików.Tak, możesz użyć
visudo
do edycji tych plików. Wszystko, co musisz zrobić, to podać nazwę pliku, który chcesz edytować za pomocą-f
opcji. Na przykład:Lub w razie potrzeby:
Dokumentacja
Od
man visudo
:W podsumowaniu:
Składnia: oba
visudo
ivisudo -f
wykonaj to samo sprawdzenie składni .Uprawnienia / Własność: Jako funkcja dodana w celu ułatwienia administrowania dużymi systemami , edytowane pliki
visudo -f
nie są sprawdzane pod kątem własności lub uprawnień: umożliwia to sprawdzenie składni pliku offline lub jako część systemu kontroli wersji.Dlaczego warto korzystać
/etc/sudoers.d/
Zazwyczaj
/etc/sudoers
jest pod kontrolą menedżera pakietów dystrybucji. Jeśli dokonałeś zmian w tym pliku, a menedżer pakietów chce go zaktualizować, będziesz musiał ręcznie sprawdzić zmiany i zatwierdzić sposób ich połączenia z nową wersją. Umieszczając lokalne zmiany w pliku w/etc/sudoers.d/
katalogu, unikasz tego kroku ręcznego, a aktualizacje mogą przebiegać automatycznie.Kiedy
sudo
ignoruje plik/etc/sudoers
?Jeśli twój
/etc/sudoers
plik zawiera wiersz:następnie
sudo
odczyta pliki z katalogu/etc/sudoers.d
.Wyjątkami są:
~
.
znakOdbywa się to (a) dla wygody menedżerów pakietów, a także (b), aby pliki kopii zapasowych z edytorów były ignorowane.
źródło
visudo -f
bezpieczny?visudo -f
edycja odbywa się w bezpieczny sposób, tak jak normalnievisudo
. Właśnie dlatego mamyvisudo
i dlaczego zapewnia tę-f
opcję.-f
ponieważ może to bajtować kogoś, kto następnie skopiuje je do /etc/sudoers.d/ bez ich podwójnego sprawdzania./etc/sudoers.d/mysudorules.sudo
i przez całe życie nie mogłem zrozumieć, dlaczego zawarte w nim reguły nie zostały zastosowane przed przeczytaniem twojej odpowiedzi./sudoers.d/mysite.co.uk
nie działał i po zmianie nazwy namysite
niego działa! :)Ponieważ łatwiej jest zautomatyzowanym narzędziom (takim jak Chef czy Puppet) upuszczać pojedyncze pliki do tego katalogu, zamiast wprowadzać zmiany
/etc/sudoers
, które mogą być kruche.Pliki w
/etc/sudoers.d
są (faktycznie) łączone. Zobaczysz kilka innych przykładów tego wzoru/etc
, takich jak/etc/cron.d
i/etc/logrotate.d
.źródło
Inną zaletą używania,
visudo -f
jak wspomniano w niektórych odpowiedziach, jest odpowiednia opcja-c
lub--check
weryfikacja, czy nie masz nieprawidłowych informacji w pliku sudoers.d lub innym pliku, który możesz chcieć umieścić w sudoers.d. Jest to NAPRAWDĘ przydatne w wymienionych przypadkach zautomatyzowanych narzędzi, ponieważ można uruchomić npTo po cichu sprawdza plik (brak danych wyjściowych z powodu -q) i tylko jeśli to NIE zwróci błędu (wyjście 1 oznacza nieprawidłowy plik sudoers), wówczas skopiuje plik do sudoers.d, w ten sposób możesz utworzyć plik i pracuj nad nim bez konieczności
sudo visudo -f /etc/sudoers.d/myfile
poprawiania go za pierwszym razem (używanie musi zakończyć się powodzeniem lub odrzuca zawartość, jeśli jej nie naprawisz).Ponadto należy zachować ostrożność w odniesieniu do tych stwierdzeń z innych odpowiedzi.
Pliki w /etc/sudoers.d muszą być zgodne z tą samą składnią, co / etc / sudoers, ponieważ pod okładkami system po prostu łączy wszystkie pliki z ostatnim w „wygrywającym”, jeśli jest wiele wpisów dla tego samego pojedyncze ustawienie.
Jeśli uprawnienia są strasznie niepoprawne (zapisywalne na całym świecie) dla plików w /etc/sudoers.d/, wówczas są one ignorowane, może to powodować, że nieprawidłowe pliki są pomijane, w przeciwnym razie możesz poważnie złamać
sudo
polecenie, mając nieprawidłowe sudoers. d plik z prawidłowymi uprawnieniami.Możesz zezwolić plikom sudoers na odczytanie na całym świecie, jeśli przypadkowo zezwolisz „innemu” na uprawnienie do zapisu potrzebne do sudo jako inny użytkownik lub z terminala głównego uruchom tę komendę. Może to również spowodować uszkodzenie, jeśli plik należy do kogoś innego niż root: root.
Właśnie potwierdziłem, że jeśli uruchomię, nie
chmod o+w /etc/sudoers.d/vagrant
będę mógł dłużej sudo jako włóczęgi, wyświetli monit o podanie hasła, a następnie się nie powiedzie.Kiedy pobiegłem,
sudo -l
aby wyświetlić zastosowane uprawnienia polecenia jako inny prawidłowy użytkownik sudo, otrzymałem również ostrzeżenie o uprawnieniach do plików. To jest to samo polecenie, którego użyłem, aby potwierdzić, że użytkownik „włóczęga” stracił sudo, kiedy zastosowałemo+w
uprawnienia do pliku, nadając mu uprawnienia sudo.źródło
Tylko krótki dodatek do dowolnej ogólnej odpowiedzi ... żadna z pozostałych odpowiedzi nie rozwiązała mojego problemu, a mianowicie, że kolejność ma znaczenie.
Jeśli twoje linie działają w sudoers, ale nie sudoers.d, spróbuj przesunąć #include lub zmienić kolejność plików sudoers.d (przez prefiks z liczbą). Wydaje się, że najbardziej konkretna rzecz powinna być pierwsza w pliku.
Miałem coś takiego:
A drugi nie przyniósł efektu, ponieważ pierwszy już pasował. NOPASSWD nie jest warunkiem, ale jakimś sposobem modyfikacji akcji.
I nie było to oczywiste, ponieważ nie było go w jednym pliku ze względu na katalog sudoers.d.
źródło