Pomocí příkazu su může každý uživatel, který zná heslo uživatele root, „získat uživatele root“ a dělat vše, co může uživatel root. Účet používající „su – root“ je v podstatě správce serveru. To je často mnohem více pravomocí, než by mělo být delegováno na uživatele. Lepší praxí je delegovat specifické funkce na uživatele spíše než udělovat celosystémová oprávnění root.
Příkaz sudo umožňuje správci serveru delegovat konkrétní příkazy konkrétním uživatelům, aniž by jim byla udělena plná oprávnění na serveru. Delegování se provádí v souboru /etc/sudoers pomocí editoru visudo. Uživatelé a skupiny mohou dostat specifické příkazy ke spouštění, aby mohli plnit své povinnosti, aniž by měli plná oprávnění správce.
Syntaxe
Syntaxe příkazu sudo je:
$ sudo [options] {command}
Pokud při spouštění příkazu sudo narazíte na níže uvedenou chybu:
sudo: command not found
můžete zkusit nainstalovat balíček sudo, jak je uvedeno níže, podle vaší volby distribuce.
Distribuce | Příkaz |
---|---|
Debian | apt-get install sudo |
Ubuntu | apt-get install sudo |
Alpine | apk přidat sudo |
Arch Linux | pacman -S sudo |
Kali Linux | apt-get install sudo |
CentOS | yum nainstalovat sudo |
Fedora | dnf install sudo |
Raspbian | apt-get install sudo |
Příklady příkazů sudo
1. Spusťte příkaz jako superuživatel:
$ sudo less /var/log/syslog
2. Upravte soubor jako superuživatel pomocí výchozího editoru:
$ sudo --edit /etc/fstab
3. Spusťte příkaz jako jiný uživatel a/nebo skupina:
$ sudo --user=user --group=group id -a
4. Opakujte poslední příkaz s předponou `sudo` (pouze v `bash`, `zsh` atd.):
$ sudo !!
5. Spusťte výchozí shell s právy superuživatele a spusťte soubory specifické pro přihlášení (`.profile`, `.bash_profile` atd.):
$ sudo --login
6. Spusťte výchozí shell s oprávněními superuživatele beze změny prostředí:
$ sudo --shell
7. Spusťte výchozí shell jako určený uživatel, načte uživatelské prostředí a načte soubory specifické pro přihlášení (`.profile`, `.bash_profile` atd.):
$ sudo --login --user=user
8. Seznam povolených (a zakázaných) příkazů pro volajícího uživatele:
$ sudo --list
Závěr
jak přesně funguje program sudo, který umí něco udělat? Je to jednodušší, než si myslíte! Viz následující kód:
$ which sudo /usr/bin/sudo $ ls -l $(which sudo) -rwsr-xr-x 1 root root 145040 Jun 13 2022 /usr/bin/sudo
Upozorňujeme, že binární spustitelný soubor sudo je ve skutečnosti program setuid-root! Přemýšlejte o tom:kdykoli spustíte program pomocí sudo, proces sudo se okamžitě spustí s oprávněním root – žádné heslo, žádné starosti. Ale samozřejmě kvůli bezpečnosti musí uživatel zadat heslo; jakmile jej zadají správně, sudo pokračuje ve vykonávání a provádí příkaz, který chcete – jako root. Pokud uživatel nezadá heslo správně (obvykle do tří pokusů), sudo přeruší provádění.