
V jakémkoli systému GNU/Linux je uživatel root postavou, kterou všichni respektují (a možná se jí i trochu bojí). Je to ekvivalent „administrátora“ v jiných systémech, s tím rozdílem, že zde jsou oprávnění tak rozsáhlá, že jediný chybně napsaný příkaz může systém během několika sekund ochromit. Důkladná znalost toho, co je root, co jsou root oprávnění a jak je spravovat, tvoří zásadní rozdíl mezi stabilním systémem a systémem, který se při sebemenší provokaci zhroutí.
Navíc každá distribuce má specifický způsob, jak s těmito oprávněními nakládat. Ubuntu, Debian, Void, openSUSE a další distribuce S root účtem se nechovají úplně stejně, se skupinami jako kolo nebo se souborem sudoersPokud spravujete servery (VPS, cloudové nebo dedikované) nebo chcete jednoduše spravovat svůj linuxový systém, budete chtít pochopit, jak funguje uživatel root a příkaz `root`. sudo, použití su a správu oprávnění správce.
Co přesně je uživatel root v Linuxu?
V Linuxu a dalších systémech podobných UNIXu uživatel root je účet s UID 0Speciální identifikátor, který poskytuje plnou kontrolu nad systémem. Tento účet je obvykle také spojen s GID 0 (hlavní skupina) root), který vám umožňuje číst, upravovat nebo mazat libovolný soubor, spravovat procesy, měnit oprávnění a dotýkat se jakékoli části souborového systému bez omezení.
Když mluvíme o „být root“, máme na mysli přihlášení nebo získání shellu , který běží s UID 0. Nejde jen o „mít více oprávnění“: jde o používání účtu, který má absolutní moc nad systémem . Všechno, co děláte pod touto identitou, běží bez omezení.
To je jiná věc. mít root oprávněníTo znamená, že váš běžný uživatel (například s UID 1000) může pomocí nástrojů, jako jsou sudoTo vám umožňuje spouštět určité příkazy „jako byste byli root“, aniž by se vaše identita relace trvale změnila. V praxi můžete provádět stejné administrativní úkoly, ale v kontrolovanějších časových rámcích a s lepší sledovatelností.
Rozdíl mezi rootem a root oprávněními
Je důležité jasně rozlišovat mezi těmito pojmy, protože přihlášení jako root není totéž jako spuštění něčeho s root oprávněními . To zahrnuje jak účet s UID 0, tak mechanismy eskalace oprávnění (sudo, su, skupiny jako wheel atd.).
Kdy Jste uživatel root (UID 0, GID 0) a provedete idUvidíte něco takového:
uid=0(root) gid=0(root) groups=0(root)
To znamená, že aktuální relace patří uživateli root a že vše, co spustíte, bude mít tato oprávnění. Není třeba nic psát. sudo před ničím: jakýkoli příkaz má volnou rukuProto je tak nebezpečné zůstat v kořenové skořápce příliš dlouho.
Pokud však použijete příkaz `sudo` , obvykle zůstanete svým „běžným“ uživatelem (například UID 1000), ale příkaz se dočasně provede s UID 0. Pokud tak učiníte:
sudo apt update
Vaše relace zůstává s vaším uživatelským účtem, ale pouze daný příkaz se provede s oprávněními správce. Totéž platí, pokud spustíte:
sudo systemctl restart apache2
V obou případech identita zobrazená v protokolech ověřování označuje, který uživatel použil sudo, což přispívá sledovatelnost a individuální odpovědnost.
Případ Wheel, Sudoers a manažerských skupin
V některých distribucích (jako je Void Linux nebo mnoho derivátů BSD) existuje skupina `wheel` , která se používá k řízení toho, kdo může používat `su` nebo `sudo` . V jiných (jako je Ubuntu a Debian v jejich typických konfiguracích) se skupina `sudo` používá k udělení tohoto oprávnění. Každá distribuce to organizuje po svém, ale myšlenka je stejná: oprávnění mohou eskalovat pouze uživatelé, kteří patří do určitých skupin.
Pokud vám Void Linux řekne, abyste přidali uživatele do wheel , normálním postupem by bylo spustit něco jako:
sudo usermod -aG wheel tu_usuario
Pak, když děláte idMezi podskupinami byste měli vidět skupinu kol. Pokud se nezobrazí, je možné, že Změna se projeví až po odhlášení.nebo že systém spravuje přístup poněkud odlišným způsobem (například spoléháním se na PAM nebo specifickou konfiguraci sudo o su (což nevyžaduje ve všech případech zahrnutí kola).
V systémech jako Ubuntu nebo Debian je výchozí skupinou obvykle sudo . Chcete-li přidat uživatele:
sudo adduser nombre_de_usuario sudo
Nejvyšší úrovně kontroly se dosáhne úpravou souboru / etc / sudoers (nebo soubory v /etc/sudoers.d/) vždy používám visudoabyste mohli definovat, které přesné příkazy může každý uživatel nebo skupina provádět. s root oprávněními, místo aby jim byla dána úplná volnost.
Root v Ubuntu: bezpečnostní zásady a použití sudo
Ubuntu se řídí poměrně jasnou filozofií: Účet root existuje, ale nepoužívá se k přímému přihlášení.Po instalaci systému má root UID 0, stejně jako v jakémkoli systému UNIX, ale nemá přiřazeno použitelné heslo pro přihlášení. Místo toho intenzivní používání sudo.
To znamená, že se ve výchozím nastavení nemůžete přihlásit k TTY ani do grafického rozhraní jako root s heslem , protože pro daného uživatele není nakonfigurováno žádné heslo. Toto rozhodnutí snižuje plochu pro útok hrubou silou a zabraňuje tomu, aby lidé zbytečně trávili celý den prací jako root.
„Normální“ postup v Ubuntu je: přihlásíte se pod svým uživatelem, tento uživatel patří do skupiny sudoA když potřebujete provést nějakou administrativní práci, spusťte příkaz sudo a ty píšeš vaše vlastní heslonikoli účet root. Systém tak zaznamenává, kdo co udělal, kdy a s jakým příkazem.
Pokud kdykoli budete chtít mít jako root plný shell (například k provedení série úkolů za sebou), můžete použít:
sudo -i
sudo su -
Oba ti dají jeden interaktivní kořenová skořápkaTím se obvykle načte přihlašovací prostředí uživatele. Chcete-li tento režim ukončit, jednoduše spusťte exit nebo stiskněte Ctrl + D.
Je uživatel root vždy k dispozici?
Bez ohledu na distribuci účet root vždy existuje interně, protože má UID 0. V závislosti na distribuci se mění, zda má daný účet platné heslo, zda je povoleno přímé přihlášení a za jakých podmínek jej lze použít.
V případě openSUSE (například Tumbleweed) můžete během instalace technicky ponechat heslo roota prázdné nebo nakonfigurovat systém tak, aby běžný uživatel měl administrátorská oprávnění pomocí sudoTo může způsobit Nejsem si jistý/á, jestli je root „aktivní“ Nebo ne. Ale samotný root účet je vždycky tam; je to jen... s ním se nemůžete ověřit protože nebylo nastaveno heslo nebo protože jej systém blokuje pomocí PAM či přihlašovacích zásad.
když používáte su Chcete-li přepnout na root a zadat své uživatelské heslo místo root hesla, obvykle budete nefungujepokud to distribuce nemá nakonfigurované su přijmout heslo uživatele sudoer namísto hesla uživatele root (méně běžné). Nejčastěji su Bude se ptát na heslo cílového uživatele, tedy na heslo roota, pokud provedete jednoduchý příkaz. su.
Dále, pokud si všimnete, že při tom su Abyste se stali rootem, váš shell pokračuje ve čtení funkcí nebo aliasů od vašeho běžného uživatele; můžete používat variantu jako su bez pomlčky (su proti su -), což z něj dělá Prostředí pro přihlášení root se nenačte úplněProto můžete pokračovat v používání svého .bashrc nebo konfiguraci zsh, což generuje chyby ve funkcích, které pro root účet neexistují.
Vzdálený přístup jako root přes SSH
Na mnoha serverech, když si sjednáte VPS nebo dedikovaný server, vám poskytovatel poskytne přímý SSH přístup jako root s heslem nebo, ještě lépe, s SSH klíčem. Z linuxového systému je připojení jednoduché jako:
ssh root@IP-del-servidor
Ve Windows je obvyklým přístupem použití klienta, jako je PuTTY . Jednoduše zadejte IP adresu serveru do pole Název hostitele , klikněte na Otevřít a po zobrazení okna terminálu se přihlaste jako root pomocí zadaného hesla nebo nakonfigurovaného klíče.
Můžete se také spojit s jakýmkoli jiným uživatelem na serveru a jakmile jste uvnitř, eskalovat na root pomocí sudo nebo su pokud daný uživatel patří do příslušných skupin nebo má odpovídající konfiguraci v /etc/sudoersV takovém případě pracujete s omezenými oprávněními, dokud nebudete potřebovat provést konkrétní administrativní úlohu.
Rizika neopatrného používání rootu
Root oprávnění jsou neuvěřitelně užitečná, ale zároveň jsou dvousečnou zbraní. Jakýkoli překlep nebo špatně pochopený příkaz může vést k úplné ztrátě dat, nestabilitě systému nebo bezpečnostním zranitelnostem, které váš počítač vystaví riziku.
Jedním z nejzřejmějších nebezpečí je nechtěné smazání nebo úprava systémových souborů . Jako root se nezobrazí výzva „Jste si jisti?“ ani koš. Příkaz jako:
sudo rm -rf /
Nebo chybně napsaná varianta (s nesprávnou cestou, mezerou navíc, špatně umístěným zástupným znakem…) může smazat polovinu souborového systému bez vyžádání potvrzení . A obnova, pokud je vůbec možná, je obvykle složitá a pouze částečná.
Je tu také otázka provedení skripty stažené z internetu s oprávněními rootPokud je skript škodlivý nebo špatně naprogramovaný, může bez vašeho vědomí smazat citlivé soubory, změnit kritická nastavení, nainstalovat malware, deaktivovat obranu nebo přidat zadní vrátka. A pokud jste jej spustili pomocí sudoDal jsi mu neomezená oprávnění.
V prostředí s více servery (produkční, testovací, vývojové) zvyšuje práce s oprávněním root na více terminálech současně riziko spuštění příkazu na nesprávném počítači . Jednoduchý restart nebo omylem provedené smazání v produkčním prostředí může službu odpojit od sítě a způsobit značné problémy.
Aby toho nebylo málo, když si zvyknete pracovat neustále jako root, snadno se uvolníte a nezkontrolujete si, co píšete . Abyste se vyhnuli problémům, je nezbytné zkrátit dobu strávenou se zvýšenými oprávněními a pečlivě si projít příkazy před stisknutím klávesy Enter.
Root a zabezpečení: útoky, protokoly a auditování
Z bezpečnostního hlediska je root oprávnění jediným bodem selhání . Pokud útočník získá root oprávnění (ať už krádeží přihlašovacích údajů, zneužitím zranitelnosti nebo podvodným přimět uživatele ke spuštění škodlivého softwaru), získá nad počítačem úplnou kontrolu.
Na serverech vystavených internetu otevírá povolení přímého přístupu root přes SSH pouze s použitím hesla dveře k... neustálé útoky hrubou silouAutomatizovaní boti se pokoušejí přihlásit jako root Neustálé testování kombinací hesel. Pokud je heslo slabé nebo opakovaně používané v jiných službách, máte konec.
Navíc, pokud vždy pracujete jako root, může jakákoli zranitelná aplikace běžící pod touto identitou (prohlížeč, špatně nakonfigurovaný webový server atd.) sloužit jako vstupní bod. Jakmile je tato aplikace napadena, útočník zdědí všechna oprávnění.
Dalším důležitým problémem je nedostatečná sledovatelnostPři použití sudo se zaznamenávají administrativní akce. /var/log/auth.log nebo v deníku (journalctl): který uživatel spustil který příkaz a kdy. Pokud se naopak všichni přihlásí přímo jako root, logy pouze uvádějí „toto provedl root“, aniž by bylo možné určit, kdo za tím skutečně stál.
V prostředích, kde jsou vyžadovány bezpečnostní standardy (ISO 27001, PCI DSS a podobné), je klíčová sledovatelnost a individuální odpovědnost. Neustálá práce jako root bez použití sudo brání auditům , komplikuje řešení problémů a často je v rozporu s osvědčenými postupy požadovanými mnoha rámci pro dodržování předpisů. Použití zabezpečeného hardwaru, jako je dev-tpm0 a TPM, může navíc posílit integritu a auditovatelnost systému.
Způsoby získání root oprávnění
V praxi většina moderních linuxových distribucí používá tři hlavní mechanismy pro přístup k administrátorským oprávněním: `sudo` , `su` a přímé přihlášení (lokální nebo vzdálené). Každý z nich má svůj vlastní kontext a rizika.
Pro spuštění jednoho příkazu s root oprávněními je nejběžnějším způsobem použití:
sudo comando argumentos
Například:
sudo apt update
sudo apt install firefox
sudo systemctl restart apache2
sudo nano /etc/ssh/sshd_config
Toto trvale nezmění váš uživatelský účet . Pouze daný příkaz se provede s UID 0 a zaznamená se, kdo jej spustil. Pro většinu každodenních administrativních úkolů je to nejbezpečnější možnost.
Pokud potřebujete trvalejší root relaci, protože budete spouštět několik příkazů za sebou, můžete použít:
sudo -i
sudo su -
Tyto příkazy vám poskytnou root shell, obvykle načtoucí root přihlašovací prostředí (proměnné, PATH atd.). To je velmi výhodné pro určité zdlouhavé úlohy, ale Nejlepší je tento režim opustit, jakmile skončíte. s exitČím méně času strávíte jako root, tím menší je šance, že uděláte chybu.
Povolení a správa hesla root
V Ubuntu a dalších distribucích, ačkoli se to nedoporučuje, můžete root účtu přiřadit heslo , abyste jej mohli používat přímo. Typický příkaz je:
sudo passwd root
Systém vás nejprve požádá o uživatelské heslo (pro ověření použití sudo) a poté se vás dvakrát zeptá na nové heslo, které chcete přiřadit uživateli root. Od tohoto okamžiku root bude mít definované heslo A pokud to ověřovací zásady umožňují, můžete se přihlásit lokálně nebo použít su zadáním tohoto klíče. Na zařízeních, jako je například Raspberry Pi, je vhodné změnit výchozí heslo.
Pokud chcete kdykoli zablokovat přihlášení root bez smazání účtu, můžete provést následující:
sudo passwd -l root
Tím se heslo deaktivuje (aniž by bylo zcela odstraněno) a zabrání se tak přímému přístupu. Chcete-li toto nastavení vrátit zpět:
sudo passwd -u root
V každém případě, zejména v Ubuntu, se obecně doporučuje nepoužívat root s heslem pro každodenní úkoly . Mnohem rozumnější je pokračovat v práci s běžným uživatelským účtem a v případě potřeby použít sudo.
Konfigurace SSH pro povolení nebo zakázání root přístupu
Z bezpečnostních důvodů mnoho instalací serverů zahrnuje Přihlášení root přes SSH zakázánoChcete-li toto chování změnit (i když to není ideální), je třeba upravit konfigurační soubor OpenSSH: /etc/ssh/sshd_config.
Typický postup je:
- Ujistěte se, že má root heslo Pokud plánujete použít tuto metodu ověřování:
sudo passwd root. - Upravit nastavení SSH s root oprávněními:
sudo nano /etc/ssh/sshd_config - Vyhledejte (nebo přidejte) direktivu
PermitRootLogina nastavte toyespokud chcete povolit přímý root přístup s heslem. - Restartujte službu SSH pro použití změn:
sudo systemctl restart ssh(osshd(v závislosti na distribuci).
Nejrozumnějším řešením, pokud potřebujete určitou flexibilitu, aniž byste museli dveře otevírat příliš dokořán, je použít PermitRootLogin prohibition-password takže pouze ti, kteří přijímají ověřování klíče a ne heslem. Přesto je obvykle preferovanou možností přihlásit se jako běžný uživatel a poté použít sudo.
Pokud chcete posílit zabezpečení, jednoduše opakujte tyto kroky v opačném pořadí: v sshd_config pony PermitRootLogin norestartujte službu a pokud chcete, uzamkněte root účet pomocí sudo passwd -l rootTo je nutí k Veškerá vzdálená správa musí být prováděna prostřednictvím konkrétních uživatelů s oprávněními sudo.Jako doplňkové opatření zvažte použití dm-verity v Linuxu k ochraně integrity systému.
Upravte sudoery a udělte root oprávnění ostatním uživatelům
Někdy potřebujete nově vytvořeného uživatele, aby mohl spouštět příkazy jako rootPředstavte si například, že jste vytvořili uživatele testftp s useradd o adduserAle když se pokusíte použít sudo Zobrazí se vám následující zpráva: testftp is not in the sudoers file.
„Rychlý“ způsob v mnoha distribucích založených na Debianu/Ubuntu je přidání uživatele do skupiny sudo :
sudo adduser testftp sudo
V jiných prostředích nebo pokud chcete přesnější kontrolu, můžete soubor upravit. /etc/sudoers (nebo přidejte konkrétní soubor do /etc/sudoers.d/) vždy používám:
sudo visudo
Uvnitř můžete přidat řádek kopírující kořenovou šablonu, ale pro daného uživatele:
testftp ALL=(ALL:ALL) ALL
Díky tomu bude testftp moci spustit libovolný příkaz jako root pomocí sudo, stejně jako root (ale s možností sledovat). Pokud potřebujete přísnější omezení, můžete omezit povolené příkazy, vyžadovat TTY, vynutit zadání hesla atd.
Na citlivějších serverech je běžnou praxí neudělovat „plná oprávnění“ žádnému uživateli ve skupině sudo, ale spíše definovat v sudoers přesně co se může a nemůže dělatNapříklad povolení správy pouze konkrétní služby nebo určitých administrativních skriptů.
Po úpravě a uložení pomocí visudoDotčený uživatel by již neměl vidět chybu „není v souboru sudoers“ a bude moci kontrolovaným způsobem eskalovat oprávnění.
Nejlepší postupy při používání root a sudo
Práce s root oprávněními není jen o tom, vědět, jaké příkazy použít, ale také o přijetí řádných bezpečnostních postupů . Zde je několik základních doporučení, která je třeba mít na paměti:
Zaprvé se snažte používat `sudo` pouze pro specifické příkazy, kdykoli je to možné. Čím méně času strávíte v root shellu, tím menší je šance, že uděláte vážnou chybu. Krátká série příkazů s `sudo` je obecně bezpečnější než otevřít root relaci a zapomenout se odhlásit.
Pokud potřebujete použít sudo -i o sudo su -Udělejte to, když jste si jisti, že budete postupně spouštět skupinu administrativních úloh. Jakmile skončíte, ukončete root. s exitPonechání root relace otevřené na pozadí, zejména na sdíleném počítači nebo přístupné ploše, výrazně zvyšuje riziko.
Nikdy neotevírejte prohlížeč, e-mailového klienta ani podezřelé dokumenty z root relace. Jakékoli zneužití ovlivňující tyto aplikace zdědí oprávnění účtu, na kterém jsou spuštěny . S nedůvěryhodným obsahem vždy interagujte jako běžný uživatel.
Dalším klíčovým bodem je nikdy nespouštět neznámé skripty s příkazem `sudo` bez jejich předchozího přečtení. Pokud vám někdo řekne „vložte toto `curl | sh` s `sudo`“ a vy to uděláte bez pohledu, dáváte mu klíče ke svému systému. Otevřete skript v textovém editoru, zkontrolujte, co dělá, odkud pochází, a pokud mu nerozumíte nebo mu nedůvěřujete, nespouštějte ho.
Kdykoli je to možné, stahujte software a skripty z oficiálních nebo vysoce renomovaných zdrojů , ověřte kontrolní součty, pokud jsou k dispozici, a v případě pochybností nejprve otestujte na virtuálním počítači nebo kontejneru, který můžete v případě problému zahodit.
Nakonec využijte archiv /etc/sudoers použít princip nejmenšího privilegiaKaždému uživateli dává pouze oprávnění, která potřebuje, nic víc, a všechny akce zaznamenává pomocí sudo, takže si v případě problému můžete prohlédnout, co každý uživatel udělal.
Pochopením toho, co je uživatel root, jak se oprávnění root liší od oprávnění účtu UID 0, a rozumným používáním nástrojů, jako jsou sudo, su, administrativní skupiny a konfigurace SSH , je možné spravovat jakýkoli systém Linux s mnohem větším zabezpečením a klidem, vyhnout se zbytečným překvapením a vždy vědět, kdo co udělal a s jakými oprávněními.
