Sudo (Čeština)
Sudo (su "do") dovoluje systémovému administrátorovi předat určitým uživatelům (nebo jejich skupinám) oprávnění spouštět některé (případně všechny) příkazy jako root nebo jiný uživatel, přičemž poskytuje o těchto příkazech a jejich parametrech kontrolní záznamy. [1]
Princip
Sudo je bezpečná alternativa k tradičnímu příkazu su. Uživatelé často používají su (substitute user — nahradit uživatele) pro získání práv roota. Obecně je přihlašování pod rootem — superuživatelem — na delší dobu považováno za nerozumné. Uživatel root si užívá kompletní a absolutní kontroly nad celým systémem, což je riskantní. Malé přepsání snadno dovede uvést systém do nepoužitelného stavu a aplikace běžící pod tímto uživatelem mohou tento neomezený přístup šířit.
Spíše než to nabízí sudo dočasné navýšení práv pro jednotlivé příkazy (ať už jako root nebo jiný uživatel); navracejíc se po jejich dokončení do neprivilegovaného stavu, čímž chrání systém před nechtěnými důsledky. Navíc sudo zaznamenává všechny příkazy a neúspěšné pokusy o přístup pro kontrolu těchto událostí.
Instalace
Nainstalujte balíček sudo.
Ve výchozím nastavení uživatelům není dovoleno sudo spustit. Pro instrukce viz #Konfigurace.
Použití
S nainstalovaným a nakonfigurovaným sudem mohou uživatelé pro spuštění příkazů s oprávněními superuživatele (nebo jinými) před tyto příkazy psát sudo
. Například:
$ sudo pacman -Syu
Viz manuálová stránka suda (anglicky) pro více informací.
Konfigurace
Konfigurační soubor pro sudo je /etc/sudoers
. Tento soubor nemá být upravován přímo! Místo toho musí uživatelé zadat jako root příkaz visudo
, jenž v programu specifikovaném proměnnou prostředí $EDITOR otevře dočasnou kopii konfiguračního souboru.
# visudo
Výchozí editor je vi. Pokud si s vi nerozumíte, zadejte nejdříve tento příkaz:
# export EDITOR=nano
Nebo jej změňte natrvalo přídáním následujícího do souboru /etc/sudoers
, kde "vim" je vámi upřednostňovaný textový editor:
# Specifikace Defaults # Ve výchozím nastavení pročistit proměnné prostředí Defaults env_reset # Nastavit výchozí editor na vim, nedovolit programu visudo použít EDITOR/VISUAL. Defaults editor=/usr/bin/vim, !env_editor
Poznámka: I když použijete jiný editor, stále musíte spouštět visudo
jako root.
Když je soubor uložen, visudo
jej před přepsáním existujícího souboru /etc/sudoers
prověří na syntaktické chyby. Tento bezpečnostní prvek je zaveden kvůli tomu, že pokud konfigurační soubor obsahuje chyby, sudo bude uvedeno v nepoužitelnost.
Abyste určitému uživateli povolili získání oprávnění roota, když na začátek příkazu napíše "sudo", přidejte následující řádek:
UŽIVATELSKÉ_JMÉNO ALL=(ALL) ALL
Povolení přístupu k sudu pouze z lokálního počítače:
UŽIVATELSKÉ_JMÉNO HOSTNAME=(ALL) ALL
kde UŽIVATELSKÉ_JMÉNO je uživatelské jméno dotyčného uživatele.
Povolení členům skupiny kolo
použít sudo bez výzvy k zadání hesla:
%kolo ALL=(ALL) NOPASSWD: ALL
Obšírnější příklad sudoers
můžete nalézt zde. Pro detailní informace si prohlédněte manuál k sudoers (anglicky).
Časový limit pro heslo
Uživatelé si mohou přát změnit výchozí časový limit před vypršením hesla. Toho docílíte přidáním následující řádky do /etc/sudoers
(visudo
). Například:
Defaults:UŽIVATELSKÉ_JMÉNO timestamp_timeout=20
Zde heslo pro uživatele UŽIVATELSKÉ_JMÉNO vyprší, pokud sudo nepoužije déle než 20 minut.
Tipy a triky
Urážky
Uživatelé mohou sudo nakonfigurovat tak, aby namísto výchozí zprávy "špatné heslo" zobrazovalo chytré urážky. Najděte řádek Defaults v souboru /etc/sudoers
a přidejte za čárku ke stávajícím volbám "insults". Výsledek může vypadat nějak takto:
# Specifikace Defaults Defaults insults
Pro otestování zadejte sudo -K
pro ukončení současného sezení a nechce se suda dotázat na heslo.
Heslo roota
Uživatelé mohou sudo nakonfigurovat tak, aby místo jejich vlastního uživatelského hesla chtělo heslo uživatele root. Toho lze docílit přidáním volby rootpw
na řádek Defaults v souboru /etc/sudoers
:
Defaults timestamp_timeout=0,rootpw
Chcete-li zabránit odhalení hesla uživatele root, můžete jej omezit na určitou skupinu:
Defaults:%kolo targetpw %kolo ALL=(ALL) ALL