
Příkaz sudo vám umožňuje spouštět programy jako jiný uživatel, ve výchozím nastavení uživatel root. Pokud trávíte hodně času na příkazovém řádku, sudo je jedním z příkazů, které budete používat poměrně často.
Použití sudo místo přihlášení jako root je bezpečnější, protože můžete udělit omezená administrátorská oprávnění jednotlivým uživatelům, aniž by znali heslo root.
V tomto tutoriálu vysvětlíme, jak používat sudo
příkaz.
Instalace Sudo (příkaz sudo nenalezen) #
Balíček sudo je předinstalovaný ve většině distribucí Linuxu.
Chcete-li zkontrolovat, zda je ve vašem systému nainstalován balíček sudo, otevřete konzoli a zadejte sudo
a stiskněte Enter
. Pokud máte nainstalovaný systém sudo, zobrazí se krátká nápověda. V opačném případě uvidíte něco jako sudo command not found
.
Pokud sudo není nainstalováno, můžete jej snadno nainstalovat pomocí správce balíčků vašeho distribuce.
Instalovat Sudo na Ubuntu a Debian #
apt install sudo
Instalovat Sudo na CentOS a Fedoru #
yum install sudo
Přidání uživatele do Sudoers #
Ve výchozím nastavení je u většiny distribucí Linuxu udělení přístupu sudo stejně jednoduché jako přidání uživatele do skupiny sudo definované v sudoers
soubor. Členové této skupiny budou moci spouštět jakýkoli příkaz jako root. Název skupiny se může lišit distribuci od distribuce.
V distribucích založených na RedHat, jako je CentOS a Fedora, je název skupiny sudo wheel
. Chcete-li přidat uživatele do skupiny, spusťte:
usermod -aG wheel username
Na Debianu, Ubuntu a jejich derivátech členové skupiny sudo
jsou uděleny s přístupem sudo:
usermod -aG sudo username
Uživatelský účet root v Ubuntuis je z bezpečnostních důvodů ve výchozím nastavení zakázán a uživatelům se doporučuje provádět úlohy správy systému pomocí sudo. Počáteční uživatel vytvořený instalačním programem Ubuntu je již členem skupiny sudo, takže pokud používáte Ubuntu, je pravděpodobné, že uživatel, pod kterým jste přihlášeni, již má oprávnění sudo.
Chcete-li konkrétnímu uživateli umožnit spouštět pouze určité programy jako sudo, místo přidání uživatele do skupiny sudo přidejte uživatele do sudoers
soubor.
Chcete-li například uživateli umožnit linuxize
spustit pouze mkdir
příkaz jako sudo, zadejte:
sudo visudo
a připojte následující řádek:
linuxize ALL=/bin/mkdir
Na většině systémů visudo
příkaz otevře /etc/sudoers
soubor s textovým editorem vim. Pokud s vim nemáte zkušenosti, přečtěte si náš článek o tom, jak uložit soubor a ukončit editor vim.
Můžete také uživatelům umožnit spouštět příkazy sudo bez zadání hesla:
linuxize ALL=(ALL) NOPASSWD: ALL
Jak používat Sudo #
Syntaxe pro sudo
příkaz je následující:
sudo OPTION.. COMMAND
sudo
příkaz má mnoho možností, které řídí jeho chování, ale obvykle se používá ve své nejzákladnější podobě bez jakékoli možnosti.
Chcete-li použít sudo, jednoduše před příkazem zadejte sudo
:
sudo command
Kde command
je příkaz, pro který chcete sudo použít.
Sudo přečte /etc/sudoers
soubor a zkontrolujte, zda je volajícímu uživateli uděleno sudo assessment. Při prvním použití sudo v relaci budete vyzváni k zadání uživatelského hesla a příkaz bude spuštěn jako root.
Chcete-li například vypsat všechny soubory v /root
adresář, který byste použili:
sudo ls /root
[sudo] password for linuxize:
. .. .bashrc .cache .config .local .profile
Časový limit hesla #
Ve výchozím nastavení vás sudo po pěti minutách nečinnosti sudo požádá o opětovné zadání hesla. Výchozí časový limit můžete změnit úpravou sudoers
soubor. Otevřete soubor pomocí visudo
:
sudo visudo
Nastavte výchozí časový limit přidáním řádku níže, kde 10
je časový limit zadaný v minutách:
Defaults timestamp_timeout=10
Pokud chcete změnit časové razítko pouze pro konkrétního uživatele, přidejte následující řádek, kde user_name je dotyčný uživatel.
Defaults:user_name timestamp_timeout=10
Spustit příkaz jako uživatel jiný než root #
Existuje mylná představa, že sudo
se používá pouze k poskytnutí oprávnění root běžnému uživateli. Ve skutečnosti můžete použít sudo
spustit příkaz jako libovolný uživatel.
-u
umožňuje spustit příkaz jako určený uživatel.
V následujícím příkladu používáme sudo
ke spuštění whoami
příkaz jako uživatel „richard“:
sudo -u richard whoami
whoami
příkaz vypíše jméno uživatele spouštějícího příkaz:
richard
Jak přesměrovat pomocí Sudo #
Pokud se pokusíte přesměrovat výstup příkazu do souboru, do kterého váš uživatel nemá oprávnění k zápisu, zobrazí se chyba „Oprávnění odepřeno“.
sudo echo "test" > /root/file.txt
bash: /root/file.txt: Permission denied
K tomu dochází, protože přesměrování „>
” výstupu se provádí pod uživatelem, ke kterému jste přihlášeni, nikoli pod uživatelem zadaným pomocí sudo. K přesměrování dojde před sudo
je vyvolán příkaz.
Jedním z řešení je vyvolat nový shell jako root pomocí sudo sh -c
:
sudo sh -c 'echo "test" > /root/file.txt'
Další možností je přesměrovat výstup jako běžný uživatel do tee
příkaz, jak je znázorněno níže:
echo "test" | sudo tee /root/file.txt
Závěr č.
Naučili jste se používat sudo
a jak vytvořit nové uživatele s právy sudo.
Pokud máte nějaké dotazy, neváhejte zanechat komentář.