V Linuxu a dalších unixových operačních systémech pouze root uživatel může spouštět všechny příkazy a provádět určité kritické operace v systému, jako je instalace a aktualizace, odebírání balíčků, vytváření uživatelů a skupin, úprava důležitých konfiguračních souborů systému a tak dále.
Nicméně správce systému, který převezme roli uživatele root, může povolit ostatním normálním uživatelům systému pomocí příkazu sudo a několika konfigurací spouštět některé příkazy a také provádět řadu důležitých systémových operací, včetně těch, které jsou uvedeny výše.
Alternativně může správce systému sdílet heslo uživatele root (což není doporučená metoda), aby normální uživatelé systému měli přístup k účtu uživatele root prostřednictvím su příkaz.
sudo umožňuje povolenému uživateli provést příkaz jako root (nebo jiný uživatel), jak je uvedeno v bezpečnostní politice:
- Čte a analyzuje /etc/sudoers , vyhledá volajícího uživatele a jeho oprávnění,
- pak vyzve volajícího uživatele k zadání hesla (obvykle heslo uživatele, ale může to být i heslo cílového uživatele. Nebo jej lze přeskočit pomocí značky NOPASSWD),
- poté sudo vytvoří podřízený proces, ve kterém zavolá setuid() přepnout na cílového uživatele
- následně spustí shell nebo příkaz zadaný jako argumenty v podřízeném procesu výše.
Níže je deset /etc/sudoers konfigurace souborů pro úpravu chování sudo pomocí Výchozích záznamy.
$ sudo cat /etc/sudoers/etc/sudoers Soubor
# # This file MUST be edited with the 'visudo' command as root. # # Please consider adding local content in /etc/sudoers.d/ instead of # directly modifying this file. # # See the man page for details on how to write a sudoers file. # Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Defaults logfile="/var/log/sudo.log" Defaults lecture="always" Defaults badpass_message="Password is wrong, please try again" Defaults passwd_tries=5 Defaults insults Defaults log_input,log_output
Typy výchozích položek
Defaults parameter, parameter_list #affect all users on any host [email protected]_List parameter, parameter_list #affects all users on a specific host Defaults:User_List parameter, parameter_list #affects a specific user Defaults!Cmnd_List parameter, parameter_list #affects a specific command Defaults>Runas_List parameter, parameter_list #affects commands being run as a specific user
V rámci této příručky se vynulujeme na první typ Výchozích ve formulářích níže. Parametry mohou být příznaky, celočíselné hodnoty, řetězce nebo seznamy.
Měli byste si uvědomit, že příznaky jsou implicitně booleovské a lze je vypnout pomocí '!'
operátor a seznamy mají dva další operátory přiřazení, +=
(přidat do seznamu) a -=
(odstranit ze seznamu).
Defaults parameter OR Defaults parameter=value OR Defaults parameter -=value Defaults parameter +=value OR Defaults !parameter
1. Nastavte zabezpečenou cestu
Toto je cesta používaná pro každý příkaz spuštěný pomocí sudo, má dvě důležitosti:
- Používá se, když správce systému nedůvěřuje uživatelům sudo, že mají zabezpečenou proměnnou prostředí PATH
- Chcete-li oddělit „kořenovou cestu“ a „cestu uživatele“, pouze uživatelé definovaní pomocí exempt_group nejsou tímto nastavením ovlivněny.
Chcete-li jej nastavit, přidejte řádek:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
2. Povolit sudo v relaci přihlášení uživatele TTY
Chcete-li povolit vyvolání sudo ze skutečného tty ale ne pomocí metod, jako je cron nebo cgi-bin skripty, přidejte řádek:
Defaults requiretty
3. Spusťte příkaz Sudo pomocí pty
Útočníci mohou několikrát spustit škodlivý program (jako je virus nebo malware) pomocí sudo, což by opět rozdělilo proces na pozadí, který zůstává na koncovém zařízení uživatele, i když hlavní program skončí.
Chcete-li se takovému scénáři vyhnout, můžete nakonfigurovat sudo tak, aby spouštělo jiné příkazy pouze z psuedo-pty pomocí use_pty
parametr, zda je protokolování I/O zapnuto či nikoli následovně:
Defaults use_pty
4. Vytvořte soubor protokolu sudo
Ve výchozím nastavení se sudo přihlašuje přes syslog(3). Chcete-li však zadat vlastní soubor protokolu, použijte parametr logfile takto:
Defaults logfile="/var/log/sudo.log"
Chcete-li zaznamenat název hostitele a čtyřmístný rok do vlastního souboru protokolu, použijte log_host a log_year parametry následovně:
Defaults log_host, log_year, logfile="/var/log/sudo.log"
Níže je uveden příklad vlastního souboru protokolu sudo:
5. Log Sudo Command Input/Output
log_input a log_output parametry umožňují sudo spustit příkaz v pseudo-tty a zaznamenat všechny uživatelské vstupy a všechny výstupy odeslané na obrazovku.
Výchozí adresář protokolu I/O je /var/log/sudo-io a pokud existuje pořadové číslo relace, je uloženo v tomto adresáři. Pomocí iolog_dir můžete zadat vlastní adresář parametr.
Defaults log_input, log_output
Některé escape sekvence jsou podporovány, například %{seq}
které se rozšiřuje na monotónně se zvyšující sekvenční číslo 36, jako je 000001, kde jsou každé dvě číslice použity k vytvoření nového adresáře, např. 00/00/01 jako v příkladu níže:
$ cd /var/log/sudo-io/ $ ls $ cd 00/00/01 $ ls $ cat log
Zbytek souborů v tomto adresáři můžete zobrazit pomocí příkazu cat.
6. Přednáška Sudo Users
Chcete-li poučit uživatele sudo o používání hesla v systému, použijte přednášku parametr, jak je uvedeno níže.
Má 3 možné hodnoty:
- vždy – vždy poučit uživatele.
- jednou – pouze poučit uživatele při prvním spuštění příkazu sudo (toto se používá, pokud není zadána žádná hodnota)
- nikdy – nikdy nepoučujte uživatele.
Defaults lecture="always"
Navíc si můžete nastavit vlastní soubor přednášky pomocí souboru_lekce zadejte příslušnou zprávu do souboru:
Defaults lecture_file="/path/to/file"
7. Zobrazit vlastní zprávu, když zadáte nesprávné heslo sudo
Když uživatel zadá špatné heslo, zobrazí se na příkazovém řádku určitá zpráva. Výchozí zpráva je „omlouváme se, zkuste to znovu “, můžete zprávu upravit pomocí badpass_message parametr takto:
Defaults badpass_message="Password is wrong, please try again"
8. Zvýšit limit pokusů o heslo sudo
Parametr passwd_tries se používá k určení, kolikrát se může uživatel pokusit zadat heslo.
Výchozí hodnota je 3:
Defaults passwd_tries=5
Chcete-li nastavit časový limit hesla (výchozí je 5 minut) pomocí passwd_timeout parametr, přidejte řádek níže:
Defaults passwd_timeout=2
9. Ať vás Sudo urazí, když zadáte špatné heslo
V případě, že uživatel zadá špatné heslo, sudo zobrazí na terminálu urážky s parametrem urážky. Tím se automaticky vypne zpráva badpass_message parametr.
Defaults insults
Další informace :Ať vás Sudo urazí, když zadáte nesprávné heslo
10. Další informace o konfiguraci sudo
Kromě toho se můžete dozvědět více sudo konfigurace příkazů přečtením:Rozdíl mezi su a sudo a Jak nakonfigurovat sudo v Linuxu.
A je to! Další užitečné konfigurace příkazů sudo nebo triky a tipy můžete sdílet s uživateli Linuxu prostřednictvím sekce komentářů níže.