Příkaz sudo umožňuje uživatelům bez root spouštět další příkazy Linuxu, které by normálně vyžadovaly oprávnění superuživatele, zatímco soubor sudoers instruuje systém, jak zacházet s příkazem sudo. V tomto tutoriálu vám ukážeme všechny základy příkazů sudo a jak upravit soubor sudoers.
Porozumění sudu
Chcete-li ukázat, jak sudo funguje, nejprve přistupte ke svému VPS přes SSH. Pokud máte potíže, podívejte se na výukový program PuTTY.
Ve výchozím nastavení uživatel root nemusí používat předponu sudo. Už mají všechna možná privilegia. Mezitím, pokud chce uživatel bez oprávnění root přidat dalšího uživatele, bude muset do příkazu useradd přidat předponu sudo, například takto:
sudo useradd edward
Pokud uživatel nepoužije předponu sudo, obdrží Oprávnění odepřeno výstup.
Soubor Sudoers
Příkaz sudo se konfiguruje prostřednictvím souboru umístěného v /etc/ tzv. sudoers .
Prostřednictvím příkazu sudo poskytujete oprávnění na úrovni správce běžným uživatelům. Normálně má práva sudo první uživatel, kterého vytvoříte při instalaci Ubuntu. V prostředí VPS je to výchozí uživatel root. Můžete nakonfigurovat ostatní uživatele, aby také mohli spouštět příkaz sudo. To lze provést úpravou sudoers.
Syntaxe souboru Sudoers
Soubor můžete otevřít pomocí preferovaného textového editoru. Použijeme vi :
vi /etc/sudoers
Náš soubor VPS vypadá takto:

Podívejme se na některé formáty a pravidla, která je třeba dodržovat při úpravách sudoerů:
- Všechny řádky začínající # jsou komentáře
- root ALL=(ALL:ALL) ALL – tento řádek znamená, že uživatel root má neomezená oprávnění a může spouštět jakýkoli příkaz v systému
- %admin VŠECHNY=(VŠECHNY) VŠECHNY – znak % určuje skupinu. Kdokoli ve skupině administrátorů má stejná oprávnění jako uživatel root
- %sudo ALL=(ALL:ALL ) VŠECHNY – všichni uživatelé ve skupině sudo mají oprávnění spouštět jakýkoli příkaz
Další zajímavý řádek je #includedir /etc/sudoers.d, což znamená, že můžeme přidat konfigurace do souboru sudoers.d a propojit jej zde.
Úprava souboru Sudoers
Chcete-li upravit /etc/sudoers soubor, použijte následující příkaz:
sudo visudo -f /etc/sudoers
K úpravě souboru sudoers se doporučuje použít visudo. Visudo zajišťuje, aby sudoers upravoval vždy jeden uživatel, a poskytuje nezbytné kontroly syntaxe.
Chcete-li zjistit, kteří uživatelé jsou ve skupině sudo, můžeme použít příkaz grep:
grep ‘sudo’ /etc/group
Tím se zobrazí seznam uživatelských jmen.
K přidání uživatele s názvem bill do skupiny sudo používáme adduser příkaz v příkazovém řádku, například takto:
adduser bill sudo
Pokud ke kontrole, kdo je ve skupině, použijeme příkaz grep, uvidíme účet za uživatelské jméno.
Pokud chcete někomu udělit práva root, přidejte je do sudo.
Odebrání uživatele ze sudo:
deluser bill sudo
Příkaz deluser odstraní účet ze skupiny sudo.
Nyní již uživatelský účet nemůže provádět akce, které vyžadují oprávnění sudo.
Použití souboru Sudoers k udělení konkrétních oprávnění
Co když chceme, aby Bill mohl spouštět pouze určité druhy příkazů s právy sudo, jako je síť?
K tomu vytvoříme konfigurační soubor v /etc/sudoers.d/ tzv. networking.
K vytvoření souboru použijte následující příkaz:
sudo visudo -f /etc/sudoers.d/networking
Přidejte do souboru následující text:
Cmnd_Alias CAPTURE = /usr/sbin/tcpdump Cmnd_Alias SERVERS = /usr/sbin apache2ctl, /usr/bin/htpasswd Cmnd_Alias NETALL = CAPTURE, SERVERS %netadmin ALL=NETALL
Ve výše uvedeném souboru jsme vytvořili skupinu netadmin. Uživatelé ve skupině netadmin mohou spouštět příkazy zadané v NETALL. NETALL zase zahrnuje všechny příkazy pod aliasy CAPTURE a SERVERS. Příkaz tcpdump je pod aliasem CAPTURE, tj. /usr/sbin/tcpdump.
Dále přidáme uživatelský účet do skupiny netadmin:
sudo adduser bill netadmin
Nyní bude uživatelský účet moci spouštět příkaz tcpdump spolu s dalšími příkazy souvisejícími se sítí.
Závěr
Pokud pracujete s více uživateli, pochopení příkazu sudo a souboru sudoers je absolutní nutností. V tomto tutoriálu jste se naučili všechny základy, jak převzít kontrolu nad oprávněními vašeho systému!