Wyszukiwanie w witrynie

Różnica między su i sudo oraz jak skonfigurować sudo w systemie Linux


System Linux jest znacznie bezpieczniejszy niż jakikolwiek inny jego odpowiednik. Jednym ze sposobów wdrożenia bezpieczeństwa w Linuksie jest polityka zarządzania użytkownikami i uprawnieniami użytkowników, a zwykli użytkownicy nie są upoważnieni do wykonywania jakichkolwiek operacji systemowych.

Jeśli zwykły użytkownik musi dokonać jakichkolwiek zmian w całym systemie, musi użyć polecenia „su” lub „sudo”.

UWAGA – ten artykuł dotyczy raczej dystrybucji opartych na Ubuntu, ale ma także zastosowanie do większości popularnych Linuksa dystrybucje.

„su” kontra „sudo”

su” zmusza Cię do udostępnienia hasła root innym użytkownikom, podczas gdy „sudo” umożliwia wykonanie polecenia systemowe bez hasła root. „sudo” umożliwia używanie własnego hasła do wykonywania poleceń systemowych, tj. deleguje odpowiedzialność za system bez hasła root.

Co to jest „sudo”?

sudo” to plik binarny setuid, który wykonuje polecenia roota w imieniu autoryzowanych użytkowników, a użytkownicy muszą wprowadzić własne hasło, aby je wykonać polecenie systemowe, po którym następuje „sudo”.

Kto może wykonać polecenie „Sudo”?

Możemy uruchomić „/usr/sbin/visudo”, aby dodać/usunąć listę użytkowników, którzy mogą wykonać „sudo”.

sudo /usr/sbin/visudo

Zrzut ekranu pliku „/usr/sbin/visudo” wygląda mniej więcej tak:

Lista sudo domyślnie wygląda jak poniższy ciąg:

root ALL=(ALL) ALL

Uwaga: musisz być root, aby edytować /usr/sbin/visudo plik.

Przyznawanie dostępu do sudo

W wielu sytuacjach Administrator systemu, szczególnie nowy w tej dziedzinie, znajduje ciąg „root ALL=(ALL) ALL” jako szablon i przyznaje nieograniczony dostęp innym osobom, które mogą być potencjalnie bardzo szkodliwy.

Edycja pliku „/usr/sbin/visudo” do wzoru podobnego do poniższego może być naprawdę bardzo niebezpieczna, chyba że całkowicie uwierzysz wszystkim wymienionym użytkownikom.

root ALL=(ALL) ALL
adam ALL=(ALL) ALL
tom ALL=(ALL) ALL
mark ALL=(ALL) ALL

Parametry sudo

Prawidłowo skonfigurowane sudo” jest bardzo elastyczne i można precyzyjnie skonfigurować liczbę poleceń, które należy wykonać.

Składnia skonfigurowanej linii „sudo” jest następująca:

User_name Machine_name=(Effective_user) command

Powyższą składnię można podzielić na cztery części:

  1. Nazwa_użytkownika: to jest nazwa użytkownika „sudo”.
  2. Nazwa_komputera: Jest to nazwa hosta, w którym obowiązuje polecenie „sudo”. Przydatne, gdy masz wiele komputerów-hostów.
  3. (Effective_user): „Efektywny użytkownik”, który może wykonywać polecenia. Ta kolumna umożliwia użytkownikom wykonywanie poleceń systemowych.
  4. Polecenie: polecenie lub zestaw poleceń, które może uruchomić użytkownik.

Sugerowana lektura: 10 przydatnych konfiguracji Sudoers do ustawiania „sudo” w systemie Linux

Niektóre sytuacje i odpowiadająca im linia „sudo”:

Q1. Masz oznaczenie użytkownika, który jest Administratorem Bazy Danych. Powinieneś zapewnić mu cały dostęp tylko do serwera bazy danych (beta.database_server.com), a nie do żadnego hosta.

W powyższej sytuacji wiersz „sudo” można zapisać jako:

mark beta.database_server.com=(ALL) ALL

Q2. Masz użytkownika „tom”, który ma wykonywać polecenia systemowe jako użytkownik inny niż root na tym samym serwerze bazy danych, jak opisano powyżej.

W powyższej sytuacji wiersz „sudo” można zapisać jako:

mark beta.database_server.com=(tom) ALL

Pyt. 3. Masz użytkownika sudo „cat”, który ma uruchamiać polecenie „ tylko pies.

Aby zaimplementować powyższą sytuację, możemy napisać „sudo” jako:

mark beta.database_server.com=(cat) dog

Q4. Co się stanie, jeśli użytkownik będzie musiał otrzymać kilka poleceń?

Jeśli liczba poleceń, które użytkownik powinien uruchomić, jest mniejsza niż 10, możemy umieścić wszystkie polecenia obok siebie, pozostawiając między nimi odstęp, jak pokazano poniżej:

mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...

Jeśli ta lista poleceń różni się w zależności od zakresu, w którym dosłownie nie jest możliwe ręczne wpisanie każdego polecenia, musimy użyć aliasów. Skróty! Tak, narzędzie Linux, w którym długie polecenie lub listę poleceń można określić jako małe i łatwe słowo kluczowe.

Kilka przykładów alias, których można użyć zamiast wpisu w pliku konfiguracyjnym „sudo”.

User_Alias ADMINS=tom,jerry,adam
user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE
Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top

Można określić Grupy systemowe zamiast użytkowników należących do tej grupy, dodając jedynie przyrostek „%”, jak poniżej:

%apacheadmin WEBSERVERS=(www) APACHE

Pytanie 5. A co powiesz na wykonanie polecenia „sudo” bez podawania hasła?

Możemy wykonać polecenie „sudo” bez podawania hasła, używając flagi „NOPASSWD”.

adam ALL=(ALL) NOPASSWD: PROCS

Tutaj użytkownik „adam” może wykonać wszystkie polecenia z aliasem w „PROCS ” bez podawania hasła.

Sugerowana lektura: Pozwól Sudo obrazić Cię, gdy wpiszesz nieprawidłowe hasło

sudo” zapewnia solidne i bezpieczne środowisko z dużą elastycznością w porównaniu do „su”. Co więcej, konfiguracja „sudo” jest łatwa. Niektóre dystrybucje Linuksa mają domyślnie włączoną opcję „sudo”, podczas gdy większość współczesnych dystrybucji wymaga jej włączenia jako środka bezpieczeństwa.

Aby dodać użytkownika (boba) do sudo, po prostu uruchom poniższe polecenie jako root.

adduser bob sudo

To wszystko na teraz. Wrócę tu ponownie z kolejnym ciekawym artykułem. Do tego czasu bądź na bieżąco i połącz się z Tecmint. Nie zapomnij podzielić się z nami swoją cenną opinią w sekcji komentarzy.