Uzyskiwanie Uprawnień

Administratorzy systemu, a w niektórych przypadkach użytkownicy, muszą wykonywać określone zadania z dostępem administracyjnym. Dostęp do systemu za pomocą użytkownika root jest potencjalnie niebezpieczny i może prowadzić do rozległych uszkodzeń systemu i danych. W tym rozdziale omówiono sposoby uzyskiwania uprawnień administracyjnych za pomocą programów setuid takich jak su i sudo. Programy te pozwalają konkretnym użytkownikom na wykonanie zadań, które normalnie byłyby dostępne jedynie dla użytkownika root, jednocześnie zachowując wyższy poziom kontroli i bezpieczeństwa systemu.

Polecamy zapoznać się również z Poradnikiem Bezpieczeństwa Red Hat Enterprise Linux 7, gdzie znajdziesz dodatkowe informacje na temat mechanizmów zarządzania systemem, potencjalnych zagrożeń oraz sposobów na uniknięcie utraty danych z powodu niepoprawnego użycia uprawnień administratora.

Polecenie su

Gdy użytkownik wywoła polecenie su, zostanie poproszony o hasło do konta`root`. Po poprawnym uwierzytelnieniu zostanie uruchomiona linia komend użytkownika root.

Po zalogowaniu za pomocą komendy su, użytkownik używa konta root i ma pełen dostęp do komputera jako administrator. Warto mieć na uwadze, że dostęp ten wciąż jest limitowany przez ograniczenia narzucane przez program SELinux, o ile jest włączony. Dodatkowo, gdy użytkownik używa konta root, może ponownie użyć polecenia su aby zalogować się na dowolnego innego użytkownika w systemie bez potrzeby podawania hasła.

Z racji możliwości tego programu, zalecane jest aby administratorzy systemowi w ramach swoich organizacji ograniczali dostęp do tej komendy.

Jednym z prostszych sposobów, aby dać użytkownikowi uprawnienia do tej komendy jest dodanie go do specjalnej grupy administratorów zwanej wheel. Aby to zrobić, wpisz następujące polecenie jako root:

~]# usermod -a -G wheel nazwaUżytkownika

W powyższym poleceniu zastąp słowo użytkownik nazwą użytkownika, którego chcesz dodać do grupy wheel.

Możesz również użyć zakładki Użytkownicy w ustawieniach systemu aby zarządzać grupami użytkowników. Potrzebujesz do tego uprawnień administratora.

  1. Wciśnij przycisk Super aby otworzyć Podgląd Aktywności, wpisz Użytkownicy i wciśnij Enter. Narzędzie Użytkownicy zostanie wyświetlone. Przycisk Super ma różny wygląd w zależności od klawiatury, ale zwykle jest to przycisk Windows lub Command, zazwyczaj ulokowany na lewo od Spacji.

  2. Aby umożliwić wprowadzanie zmian, wciśnij przycisk Odblokuj…​ i wpisz prawidłowe hasło administratora.

  3. Wybierz ikonę użytkownika z kolumny po lewej stronie, aby wyświetlić jego ustawienia w panelu po prawej stronie.

  4. Zmień typ konta ze Standardowe na Administrator`za pomocą suwaka. To doda użytkownika do grupy `wheel.

Zapoznaj się z rozdziałem Managing_Users_and_Groups.adoc#s1-users-configui aby uzyskać więcej informacji na temat narzędzia Użytkownicy.

Po dodaniu odpowiednich użytkowników do grupy wheel, zaleca się ograniczenie dostępu do komendy su tylko do kont z tej grupy. Aby tego dokonać, należy zmodyfikować plik konfiguracji PAM dla komendy su, /etc/pam.d/su. Otwórz ten plik w edytorze tekstowym i odkomentuj następującą linię poprzez usunięcie znaku #:

#auth           required        pam_wheel.so use_uid

Ta zmiana spowoduje, że tylko członkowie grupy administracyjnej wheel będą mieli możliwość przełączenia się na inne konto za pomocą polecenia su.

Uwaga

Użytkownik root jest domyślnie w grupie wheel.

Polecenie sudo

Polecenie sudo umożliwia inne podejście do udostępniania użytkownikowi uprawnień administratora. Gdy użytkownik z odpowiednimi uprawnieniami poprzedzi polecenie za pomocą komendy sudo, zostanie poproszony o swoje własne hasło. Jeżeli uwierzytelnienie się powiedzie oraz użytkownik ma uprawnienia do używania tej komendy, polecenie zostanie wykonane tak, jakby użytkownik był zalogowany na konto root.

Podstawowa struktura polecenia sudo wygląda tak:

sudo polecenie

W powyższym przykładzie, polecenie powinno zostać zastąpione wywołaniem komendy która jest zarezerwowana dla użytkownika root - na przykład polecenie mount.

Polecenie sudo pozwala na większą elastyczność. Na przykład, tylko użytkownicy wymienieni w pliku /etc/sudoers są uprawnieni korzystać z polecenia sudo, a polecenie jest wykonywane w kontekście ich sesji linii komend, a nie użytkownika root. Oznacza to, że dostęp do sesji użytkownika root może być całowicie zablokowana - opis takiego przypadku znajduje się w Poradniku Bezpieczeństwa Red Hat Enterprise Linux 7.

Każde udane uwierzytelnienie za pomocą polecenia sudo jest zapisywane w pliku /var/log/messages, a wywołane polecenie wraz z nazwą konta, z którego zostało wywołane w pliku /var/log/secure. Jeżeli dodatkowe wpisy w dzienniku są wymagane, użyj modułu pam_tty_audit aby włączyć audyt TTY dla konkretnych użytkowników poprzez dodanie następującej linii do pliku /etc/pam.d/system-auth:

session required pam_tty_audit.so disable=wzór enable=wzór

gdzie wzór to oddzielona przecinkami lista użytkowników, z uwzględnieniem symbolów maski. Przykładowo, następująca konfiguracja udostępni audyt TTY dla użytkownika root i zablokuje go dla pozostałych użytkowników:

session required pam_tty_audit.so disable=* enable=root

Kolejną zaletą polecenia sudo jest to, że administrator może umożliwić różnym użytkownikom dostęp do konkretnych poleceń, na podstawie ich potrzeb.

Administratorzy chcący modyfikować plik /etc/sudoers zawierający konfigurację komendy sudo, powinni użyć polecenia visudo.

Aby nadać pełne uprawnienia administratora, użyj polecenia visudo i dodaj linię zbliżoną do następującej w sekcji definiującej uprawnienia użytkowników:

jarek ALL=(ALL) ALL

Na bazie tego przykładu użytkownik jarek może użyć polecenia sudo z dowolnego serwera i wykonać dowolne polecenie.

Przykład poniżej pokazuje poziom granulacji, z jaką można konfigurować polecenie sudo:

%users localhost=/sbin/shutdown -h now

Na bazie tego przykładu każdy użytkownik będący w grupie systemowej users może wywołać polecenie /sbin/shutdown -h now, tak długo jak jest wywołane z poziomu konsoli.

Dokumentacja man dla sudoers opisuje dokładniej możliwości konfiguracji tego pliku.

Ważne

Istnieją pewne zagrożenia, o których należy pamiętać używając polecenia sudo. Możesz ich uniknąć poprzez wykorzystanie polecenia visudo do modyfikacji pliku konfiguracji /etc/sudoers, tak jak zostało to opisane wyżej. Domyślne wartości pliku /etc/sudoers dają każdemu użytkownikowi w grupie wheel pełny dostęp do sesji root.

  • Domyślnie polecenie sudo przechowuje hasło osoby która wywołała polecenie przez pięć minut. Każde wywołanie polecenia w tym czasie nie będzie wymagało od użytkownika ponownego podania hasła. Może to być wykorzystane przez osoby trzecie, jeżeli użytkownik oddali się od swojego komputera nie blokując dostępu. Zachowanie to może zostać nadpisane poprzez dodanie następującej linii do pliku /etc/sudoers:

    Defaults    timestamp_timeout=wartość

    gdzie wartość to oczekiwany przez nas czas ważności uwierzytelnienia. Ustawienie wartość na 0 spowoduje, że polecenie sudo będzie wymagało podania hasła za każdym razem.

  • Jeżeli konto z takimi uprawnieniami zostanie przejęte przez osoby trzecie, mogą one użyć polecenia sudo aby otworzyć nową sesję linii komend z uprawnieniami administratora:

    sudo /bin/bash

    Otwarcie nowej sesji jako root w ten lub inny sposób daje osobie atakującej uprawnienia administratora na (w teorii) nielimitowany czas i pozwala na ominięcie czasu ważności uwierzytelnienia podanego w pliku /etc/sudoers, nie wymagając od osoby atakującej podania hasła dla komendy sudo tak długo, aż sesja w której pracuje nie zostanie zamknięta.

Dodatkowe Materiały

Programy dające uprawnienia administratora stanowią potencjalne źródło zagrożenia dla systemu, ale bezpieczeństwo systemu jest poza zakresem tej książki. Zachęcamy do użycia materiałów przedstawionych poniżej, aby lepiej poznać tematy bezpieczeństwa i uprawnień systemowych.

Dokumentacja zainstalowana w systemie
  • su(1) — Strona dokumentacji dla polecenia su przedstawia informacje odnośnie dodatkowych opcji, które można podać wraz z tym poleceniem.

  • sudo(8) — Strona dokumentacji dla polecenia sudo przedstawia dokładny opis zachowania tej komendy oraz opisuje jakie są możliwości zmiany ich zachowania.

  • pam(8) — Strona dokumentacji opisuje jak używać wtyczek z modułami uwierzytelniania (Pluggable Authentication Modules, (PAM)) dla systemu Linux.

Dokumentacja online
Zobacz Również