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:
- Nazwa_użytkownika: to jest nazwa użytkownika „sudo”.
- Nazwa_komputera: Jest to nazwa hosta, w którym obowiązuje polecenie „sudo”. Przydatne, gdy masz wiele komputerów-hostów.
- (Effective_user): „Efektywny użytkownik”, który może wykonywać polecenia. Ta kolumna umożliwia użytkownikom wykonywanie poleceń systemowych.
- 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.