na kompleksowy przewodnik do opanowania plików użytkowników do korzystania sudo?.
co to jest plikami sudoers?
z plikami sudoers jak każdy inny plik na systemie operacyjnym Linux., Ale odgrywa istotną rolę w zarządzaniu tym, co” użytkownik „lub” użytkownicy w grupie ” mogą zrobić w systemie.
skąd nazwa Sudoers?
słowo Sudo jest skrótem terminu „Super User Do”. Jak to wyraźnie sugeruje — to tak, jakby powiedzieć Kernel / OS „nie masz wyboru, po prostu to zrób!”. Tak więc użytkownicy z uprawnieniami Sudo są nazywani użytkownikami Sudo. Zarządzanie wszystkich tych użytkowników sudo odbywa się za pomocą pliku o nazwie jako plik Sudoers. Ten plik również znajduje się w katalogu / etc, tak jak każdy inny plik konfiguracyjny.,
dlaczego plik Sudoers?
normalny użytkownik na Linuksie będzie miał wiele ograniczeń w systemie. Na przykład — użytkownik domyślnie nie będzie mógł uruchomić usługi, zmienić pliku konfiguracyjnego lub wykonać skryptu w systemie. Z punktu widzenia bezpieczeństwa wygląda to idealnie.,
ale weźmy przykład — Ty jako administrator systemu musisz zarządzać wszystkimi użytkownikami i ich kontrolami. Masz stronę internetową hostowaną na Apache na jednym z serwerów. Masz już Web-admina do zarządzania nim. Użytkownik powinien być stworzony dla niego na serwerze WWW. Ten użytkownik powinien mieć możliwość zrobienia dwóch rzeczy, których zwykły użytkownik nie może:
- Uruchom / zrestartuj usługę Apache na wypadek, gdyby się zatrzymała.
- Edytuj plik konfiguracyjny Apache.
masz domyślnie dwie opcje użytkownika:
- użytkownik Root, który ma wszystkie uprawnienia w systemie, w tym Apache.,
- zwykły użytkownik, który domyślnie nie będzie mógł uruchomić usługi ani edytować żadnych plików konfiguracyjnych w systemie.
wtedy plik sudoers będzie Ci przydatny. W pliku Sudoers możemy dokładnie zdefiniować:
- Web-Admin użytkownik może uruchomić tylko usługę Apache &
- może edytować tylko Plik konfiguracyjny Apache.
Zabawa z plikiem Sudoers
wystarczy teorii, zaczniemy teraz robić prawdziwe rzeczy. Wyjaśnię każdą sekcję w pliku Sudoers kilkoma przykładami., Domyślnie plik Sudoers wygląda tak:
przede wszystkim możemy zobaczyć pięć sekcji w pliku — pierwsze trzy sekcje w pliku są związane z aliasem hosta, użytkownika i Cmnd., Porozmawiamy o ALIAS później, najpierw porozmawiajmy o sekcji rdzenia :
#user Privilege Specification
root ALL = (ALL:ALL) ALL
Uwaga: '#' wskazuje komentarz w pliku, SYSTEM OPERACYJNY zignoruje tę linię podczas wykonywania.,
składnia : User <spacja> OnHost = (Runas-User:Group) <spacja> polecenia
przykład: root all = (all:All) All
read it as — użytkownik root może uruchomić dowolne polecenie jako każdy użytkownik z dowolnej grupy na dowolnym komputerze.
→ pierwsze wszystko jest używane do definiowania hostów. Możemy zdefiniować nazwę hosta/adres Ip zamiast wszystkich. / Align = „left” /
→ Po drugie wszystko: po trzecie wszystko to User: Group., Zamiast wszystkich możemy zdefiniować User lub User z grupą jak User: Group. ALL: ALL oznacza wszystkich użytkowników i wszystkie grupy.
→ Last ALL is the Command. Zamiast wszystkich możemy zdefiniować polecenie lub zestaw komend. Wszystko oznacza wszystkie polecenia.
mówiąc bardzo prosto, jest to „who where = (as_whom) what”.
Uwaga: większość ludzi rozumie hosty jako zdalne. Jest to lokalna nazwa hosta/adres IP., Pole HOSTS będzie rzadko używane, jeśli chcesz dowiedzieć się więcej o hostach w Sudoers, zapoznaj się z → https://www.sudo.ws/man/1.7.10/sudoers.man.html
zasadniczo możemy zezwolić użytkownikowi na wykonanie czegoś tylko na dwa sposoby —
- bezpośrednio dać mu pozwolenie na wykonanie polecenia poprzez modyfikację uprawnień pliku.
- pozwól mu wykonać polecenie jako inny użytkownik, który ma już uprawnienia do wykonania tego polecenia.
w pliku Sudoers będziemy implementować ten drugi.,
użyjemy innego przykładu, aby jasno zrozumieć pola w składni:
przykład : sysadmin ALL = (root) /usr/bin/cat /etc/shadow
przeczytaj to jako użytkownik „sysadmin” może uruchomić polecenie „/usr/bin/cat /etc/shadow” jako użytkownik ROOT na wszystkich hostach.
tutaj w powyższym przykładzie, w sekcji polecenia — dodałem coś więcej niż polecenie, ma to na celu pokazanie elastyczności pliku Sudoers. Część „/ usr / bin / cat ” jest binarnym programem wykonywalnym lub poleceniem używanym do przeglądania zawartości pliku., Część „/etc / shadow „jest poufnym plikiem, który przechowuje hasła, więc oznacza to, że użytkownik „sysadmin” może uruchomić tylko „/usr/bin/cat” na pliku „/etc/shadow”, jeśli ten użytkownik spróbuje wyświetlić zawartość innego pliku, na którym nie ma uprawnień do odczytu, nie będzie w stanie.,
składnia polecenia Sudo: sudo <polecenie>
przykład: sudo cat /etc/shadow
teraz jeśli użytkownik „sysadmin” używa sudo przed jakimkolwiek poleceniem, system operacyjny najpierw zapyta go o hasło użytkownika, zweryfikuje hasło, a następnie przejdzie do pliku sudoers i sprawdzi, czy może wydać to polecenie jako dowolny użytkownik. Jeśli jest dozwolony-sukces, w przeciwnym razie zgłosi jedną z tych dwóch rzeczy —
→ Użytkownik nie jest w pliku Sudoers. Ten incydent zostanie zgłoszony.,
Note : You can see this reported incident in /var/log/auth.log
→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>
tutaj użytkownik webadmin może uruchomić tylko „cat / etc / shadow”. Ale próbował uruchomić polecenie ' cat ' NA „/ etc / gshadow”, co nie jest dozwolone.
ponieważ mamy wystarczająco dużo opanowania pól w składni pliku Sudoers, przejdźmy do przodu i zrozumiemy inne sekcje w pliku. Wszystkie pozostałe sekcje będą zależeć od sekcji podstawowej, którą już omówiliśmy.,
następna sekcja to sekcja grupy, która jest
#pozwala członkom grupy sudo wykonać dowolne polecenie
%sudo ALL = (ALL:ALL) ALL
percentyl symbol '%' jest używany do reprezentowania grupy w pliku Sudoers. Wszystkie pola i ich funkcjonalności w tej sekcji są dokładnie takie same, jak omówione w poprzedniej sekcji-sekcji użytkownika. Możemy przypisać te same uprawnienia Sudo grupie zamiast użytkownikowi, podając nazwę grupy- % <nazwa grupy>., Tak więc wszyscy członkowie grupy odziedziczą te same przywileje nadane grupie.
domyślnie istnieje grupa SUDO zdefiniowana w pliku Sudoers. Widzimy, że te uprawnienia są dokładnie takie same jak uprawnienia użytkowników ROOT w pliku. Więc jeśli użytkownik jest członkiem tej grupy SUDO, może wykonać wszystkie polecenia, które użytkownik ROOT może wykonać.
zdefiniujmy grupę niestandardową i lepiej zrozummy składnię. Weźmy w tym celu ten sam stary przykład administratora systemu. Załóżmy, że nie. pracowników jest teraz więcej, więc administratorzy systemu są teraz 3., Każdy z nich wymaga dokładnie tych samych uprawnień, które daliśmy pierwszemu administratorowi systemu. Jedną rzeczą, którą możemy zrobić, aby to osiągnąć, jest posiadanie trzech wpisów dla wszystkich trzech administratorów systemu w pliku Sudoers. Jeśli podejdziemy do tego podejścia, obrażamy możliwości pliku Sudoers.
najlepiej jest zgrupować wszystkich trzech administratorów systemu w grupę o nazwie 'SystemAdminGroup'., Zdefiniujemy wymagane uprawnienia dla tej grupy za pomocą —
%SystemAdminGroup ALL = (root) /usr/bin/cat /etc/shadow
teraz wszyscy trzej administratorzy mogą wykonać polecenie uprzywilejowane. Zrobiliśmy to za jednym razem, używając definicji grupy.
plik Sudoers jest w stanie uczynić cały proces bardziej wydajnym za pomocą różnych funkcjonalności. Do tego celu służą pierwsze trzy sekcje-aliasy., Jak już sugeruje słowo, używamy aliasu do czegoś, czego możemy użyć w całym pliku, jest to tak jak zmienna globalna w skrypcie. Jak to ma sprawić, że całość będzie bardziej efektywna? Możemy zdefiniować zestaw komend, hostów i użytkowników w jednej linii, przypisujemy tę linię do nazwy aliasu, alias ten będzie używany zawsze i wszędzie, bez definiowania wszystkich komend / hostów/użytkowników na nowo.
chcę dodać jeszcze jeden ALIAS, który domyślnie nie jest wymieniony w pliku Sudoers, czyli „Run_as ALIAS”., Teraz mamy cztery aliasy —
- Alias użytkownika jako User_Alias
- Run-jako ALIAS Runas_Alias
- Alias hosta jako Host_Alias
- Alias Komendy jako Cmnd_Alias
Uwaga : Nazwa aliasu powinna być zdefiniowana wielkimi literami i może zawierać liczbę, alfabet i podkreślenie (_). Nazwa aliasu musi zaczynać się od alfabetu.,3e”>nazwa aliasu> = <nazwa użytkownika>,<nazwa użytkownika>, <nazwa użytkownika>…
przykład: user_alias sysadmins = John,Tim,Tom
użycie: sysadmins all = (root) /usr/bin/cat /etc/shadow
Jeśli chcę mieć jakiś zestaw uprawnień sudo zdefiniowanych dla użytkowników — John, Tim i Tom, nie muszę go definiować trzy razy, zamiast tego mogę zdefiniować Alias i używać tej nazwy aliasu podczas delegowania do nich dostępu sudo.,
Run As ALIAS Syntax —
Runas_Alias <ALIAS Name> =<username>,<username>,<username>…
Example: Runas_Alias MGRS = root,sradmin
Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow
If i want to define the set of users a user can run a command as, i can use Runas_Alias., Nie daj się pogubić, pamiętaj tylko o mantrze mistrza-who where = (as_whom) what. Używamy tutaj aliasu, aby uwzględnić nie. użytkowników w polu „as_whom”.
składnia aliasów hostów —
użycie: systemadmin HOSTS = (root)/usr/bin /cat/etc/shadow
Jeśli muszę zdefiniować zestaw nazw hostów, adresów ip lub zakresu adresów ip, na których użytkownik może wydawać polecenia uprzywilejowane / Sudo, mogę to osiągnąć używając aliasów hostów. Ponownie, Ta część należy do pola „gdzie” w frazie głównej.