Jak ovládat sudo Access na Linuxu

Příkaz sudo vám umožňuje spouštět příkazy v Linuxu, jako byste byli někým jiným, například rootem. sudo vám také umožňuje řídit, kdo má přístup ke schopnostem roota, a to s granularitou. Poskytněte uživatelům úplný přístup nebo je nechte používat malou podmnožinu příkazů. Ukážeme vám jak.

sudo a kořenová oprávnění

Všichni jsme slyšeli (to přílišné zjednodušení), že vše v Linuxu je soubor. Ve skutečnosti prakticky vše v operačním systému od procesů, souborů, adresářů, soketů a kanálů mluví s jádrem prostřednictvím deskriptoru souboru. Takže ačkoliv vše není soubor, s většinou objektů operačního systému se zachází tak, jako by byly. Pokud je to možné, návrh Linuxu a operačních systémů podobných Unixu dodržuje tento princip.

Koncept „všechno je soubor“ je v Linuxu dalekosáhlý. Je tedy snadné vidět, jak se oprávnění k souborům v Linuxu stala jedním z hlavních pilířů uživatelských oprávnění a práv. Pokud vlastníte soubor nebo adresář (zvláštní druh souboru), můžete si s ním dělat, co chcete, včetně jeho úprav, přejmenování, přesouvání a mazání. Můžete také nastavit oprávnění k souboru, aby ostatní uživatelé nebo skupiny uživatelů mohli soubor číst, upravovat nebo spouštět. Všichni se řídí těmito oprávněními.

Každý, kdo je, kromě superuživatele, známý jako root. Účet root je speciálně privilegovaný účet. Není vázáno oprávněními k žádnému z objektů v operačním systému. Uživatel root může dělat cokoli a prakticky kdykoli.

Totéž samozřejmě může udělat každý, kdo má přístup k heslu roota. Mohli by způsobit zkázu, ať už úmyslně, nebo náhodně. Ve skutečnosti může uživatel root způsobit zmatek tím, že udělá chybu. Nikdo není neomylný. Je to nebezpečná věc.

To je důvod, proč se nyní považuje za nejlepší postup nepřihlašovat se jako root vůbec. Přihlaste se pomocí běžného uživatelského účtu a použijte sudo krátkodobě zvýšit svá privilegia potřebuješ je. Často je to jen vydání jediného příkazu.

Seznam sudoers

sudo již bylo nainstalováno na počítačích Ubuntu 18.04.3, Manjaro 18.1.0 a Fedora 31 použitých k výzkumu tohoto článku. To není překvapení. sudo existuje od počátku 80. let minulého století a stalo se standardním prostředkem superuživatelského provozu pro téměř všechny distribuce.

Když nainstalujete moderní distribuci, uživatel, kterého vytvoříte během instalace, je přidán do seznamu uživatelů nazývaných sudoers. Toto jsou uživatelé, kteří mohou používat příkaz sudo. Protože máte schopnosti sudo, můžete je použít k přidání dalších uživatelů do seznamu sudoerů.

Samozřejmě je neuvážené rozdávat plný status superuživatele chtě nechtě nebo komukoli, kdo má jen částečnou nebo specifickou potřebu. Seznam sudoers vám umožňuje určit, se kterými příkazy mohou různí uživatelé sudo používat. Tímto způsobem jim nedáte klíče od království, ale přesto mohou splnit, co potřebují.

  Jak váš iPhone může brzy vyměnit klíče od auta

Spuštění příkazu jako jiný uživatel

Původně se tomu říkalo „superuser dělat“, protože jste mohli dělat věci jako superuživatel. Jeho rozsah byl nyní rozšířen a můžete použít sudo k provedení příkazu, jako byste byli jakýmkoli uživatelem. Byl přejmenován, aby odrážel tuto novou funkci. Nyní se nazývá „náhradní uživatel dělá“.

Chcete-li použít sudo ke spuštění příkazu jako jiný uživatel, musíme použít volbu -u (uživatel). Tady spustíme kdo jsem příkaz jako uživatel mary. Pokud použijete příkaz sudo bez volby -u, spustíte příkaz jako root.

A samozřejmě, protože používáte sudo, budete vyzváni k zadání hesla.

sudo -u mary whoami

Odpověď od whoami nám říká, že uživatelský účet spouštějící příkaz je mary.

Pomocí příkazu sudo se můžete přihlásit jako jiný uživatel, aniž byste znali jeho heslo. Budete vyzváni k zadání vlastního hesla. Musíme použít volbu -i (přihlášení).

sudo -i -u mary
pwd
whoami
ls -hl
exit

Jste přihlášeni jako mary. Soubory „.bashrc“, „.bash_aliases“ a „.profile“ pro uživatelský účet mary jsou zpracovány přesně tak, jako kdyby se vlastník uživatelského účtu mary přihlásil sám.

Příkazový řádek se změní, aby odrážel toto je relace pro uživatelský účet mary.
Příkaz pwd opakuje, že jste nyní v Mary’s domovský adresář.
whoami nám říká, že používáte uživatelský účet mary.
Soubory v adresáři patří uživatelskému účtu mary.
Příkaz exit vás vrátí zpět relaci vašeho běžného uživatelského účtu.

Úprava souboru sudoers

Chcete-li přidat uživatele do seznamu lidí, kteří mohou používat sudo , musíte upravit soubor sudoers. Je životně důležité, abyste to vždy dělali pouze pomocí příkazu visudo. Příkaz visudo zabraňuje více lidem ve snaze upravit soubor sudoers najednou. To také provádí kontrolu syntaxe a analýzu na obsah souboru, když je uložíte.

Pokud vaše úpravy neprojdou testy, soubor se slepě neuloží. Získáte možnosti. Můžete zrušit a opustit změny, vrátit se a znovu upravit změny nebo vynutit uložení nesprávných úprav. Poslední možnost je vážně špatný nápad. Nenechte se zlákat k tomu. Můžete se ocitnout v situaci, kdy je všem náhodně zablokováno používání sudo.

Přestože proces úprav zahájíte pomocí příkazu visudo, visudo není editor. Zavolá jednoho z vašich stávajících editorů, aby provedl úpravy souboru. Na Manjaro a Ubuntu byl spuštěn příkaz visudo jednoduchý editor nano. Na Fedoře visudo spustilo schopnější –ale méně intuitivní— vim.

Pokud byste raději používali nano na Fedoře, můžete to udělat snadno. Nejprve nainstalujte nano:

sudo dnf nainstalovat nano

A pak bylo třeba vyvolat visudo s tímto příkazem:

sudo EDITOR=nano visudo

To vypadá jako dobrý kandidát na alias. Otevře se editor nano se souborem sudoers načteným v něm.

Přidání uživatelů do skupiny sudo

K otevření souboru sudoers použijte visudo. Pomocí tohoto příkazu nebo příkazu popsaného výše zadejte editor podle svého výběru:

sudo visudo

Procházejte soubor sudoers, dokud neuvidíte definici položky %sudo.

Znak procenta označuje, že se jedná o definici skupiny a nikoli definici uživatele. Na některých distribucích má řádek %sudo na začátku řádku hash #. Tím se řádek stane komentářem. V takovém případě odstraňte hash a uložte soubor.

  Co je rozlišení 4K? Přehled Ultra HD

Řádek %sudo se rozpadne takto:

%sudo: Název skupiny.
ALL=: Toto pravidlo platí pro všechny hostitele v této síti.
(ALL:ALL): členové této skupiny mohou spouštět příkazy jako všichni uživatelé a všechny skupiny.
Vše: členové této skupiny mohou spouštět všechny příkazy.

Abychom to trochu přeformulovali, členové této skupiny mohou na tomto počítači nebo na jakémkoli jiném hostiteli v této síti spouštět jakýkoli příkaz, jako jakýkoli uživatel nebo jakákoli skupina. Takže jednoduchým způsobem, jak dát někomu rootová práva a možnost používat sudo, je přidat ho do skupiny sudo.

Máme dva uživatele, Toma a Mary, s uživatelskými účty Tom a Mary. Uživatelský účet tom přidáme do skupiny sudo pomocí příkazu usermod. Volba -G (skupiny) určuje skupinu, do které přidáme účet tom. Volba -a (append) přidá tuto skupinu do seznamu skupin, ve kterých už je uživatelský účet tom. Bez této volby by byl uživatelský účet tom umístěn do nové skupiny, ale odstraněn ze všech ostatních skupin.

sudo usermod -a -G sudo tom

Podívejme se, ve kterých skupinách Mary je:

groups

Uživatelský účet mary je pouze ve skupině mary.

Podívejme se s Tomem:

groups

Uživatelský účet tom – a tedy i Tom – je ve skupinách tom a sudo.

Zkusme přimět Mary, aby udělala něco, co vyžaduje oprávnění sudo.

sudo less /etc/shadow

Mary se nemůže podívat do omezeného souboru „/etc/shadow“. Za pokus o použití sudo bez svolení dostane mírné upozornění. Podívejme se, jak se Tomovi daří:

sudo less /etc/shadow

Jakmile Tom zadá své heslo, zobrazí se mu soubor /etc/shadow.

Pouhým přidáním do skupiny sudo byl povýšen do elitní kategorie těch, kteří mohou sudo používat. Zcela bez omezení.

Poskytování omezených práv sudo uživatelům

Tomovi byla udělena plná práva sudo. Může dělat cokoli, co může dělat root – nebo kdokoli jiný ve skupině sudo. To by mu mohlo poskytnout více moci, než jste ochotni předat. Někdy je vyžadováno, aby uživatel provedl funkci, která vyžaduje oprávnění root, ale neexistuje ospravedlnitelný případ, kdy by měl úplný sudo přístup. Této rovnováhy můžete dosáhnout jejich přidáním do souboru sudoers a uvedením příkazů, které mohou použít.

Seznamme se s Harrym, majitelem uživatelského účtu Harry. Není ve skupině sudo a nemá žádná práva na sudo.

groups

Pro Harryho je užitečné, aby mohl instalovat software, ale nechceme, aby měl plná práva na sudo. OK žádný problém. pojďme spustit video:

sudo visudo

Procházejte souborem dolů, dokud se nedostanete přes definice skupiny. Přidáme řádek pro Harryho. Protože se jedná o definici uživatele a nikoli definici skupiny, nemusíme řádek začínat znakem procenta.

Záznam pro uživatelský účet harry je:

harry    ALL=/usr/bin/apt-get

Všimněte si, že mezi „harry“ a „ALL=“ je tabulátor.

To znamená, že uživatelský účet Harry může používat uvedené příkazy na všech hostitelích připojených k této síti. Je zde uveden jeden příkaz, který je „/usr/bin/apt-get“. Můžeme Harrymu udělit přístup k více než jednomu příkazu tak, že je přidáme do seznamu příkazů oddělených čárkami.

  Jak najít duplicitní hodnoty v aplikaci Microsoft Excel

Přidejte řádek do souboru sudoers a soubor uložte. Pokud chcete znovu zkontrolovat, zda je řádek syntakticky správný, můžeme požádat visudo, aby prohledal soubor a zkontroloval syntaxi za nás pomocí volby -c (pouze zkontrolovat):

sudo visudo -c

Probíhají kontroly a visudo hlásí, že je vše v pořádku. Harry by nyní měl být schopen používat apt-get k instalaci softwaru ale měl by být odmítnut, pokud se pokusí použít jakýkoli jiný příkaz vyžadující sudo.

sudo apt-get install finger

Harrymu byla udělena příslušná práva sudo a je schopen nainstalovat software.

Co se stane, když se Harry pokusí použít jiný příkaz, který vyžaduje sudo?

sudo shutdown now

Harrymu je zabráněno spustit příkaz. Úspěšně jsme mu udělili specifický, omezený přístup. Může použít určený příkaz a nic jiného.

Použití sudoers uživatelských aliasů

Pokud chceme dát Mary stejná oprávnění, mohli bychom přidat řádek do souboru sudoers pro uživatelský účet mary přesně stejným způsobem, jako jsme to udělali s Harrym. Dalším, úhlednějším způsobem, jak dosáhnout stejné věci, je použít User_Alias.

v souboru sudoers obsahuje User_Alias ​​seznam názvů uživatelských účtů. Název User_Alias ​​pak může být použit v definici k reprezentaci všech těchto uživatelských účtů. Pokud chcete změnit oprávnění pro tyto uživatelské účty, máte k úpravě pouze jeden řádek.

Pojďme vytvořit User_Alias ​​a použít jej v našem souboru sudoers.

sudo visudo

Scroll down in the file until you come to the User_Alias specification line.


Přidejte User_Alias ​​zadáním:

User_Alias INSTALLERS = harry, mary

Každý prvek je oddělen mezerou, nikoli tabulátorem. Logika se rozpadá takto:

User_Alias: Toto říká visudu, že to bude User_Alias.
INSTALLERS: Toto je libovolný název pro tento alias.
= harry, mary: Seznam uživatelů, kteří mají být zahrnuti do tohoto aliasu.

Nyní upravíme řádek, který jsme dříve přidali pro uživatelský účet harry:

harry    ALL=/usr/bin/apt-get

Změňte jej tak, aby znělo:

INSTALLERS    ALL=/usr/bin/apt-get

To říká, že všechny uživatelské účty obsažené v definici „INSTALLERS“ User_Alias ​​mohou spouštět příkaz apt-get. Můžeme to vyzkoušet s Mary, která by nyní měla být schopna instalovat software.

sudo apt-get install colordiff

Mary je schopna nainstalovat software, protože je v User_Alias ​​„INSTALACI“ a tomuto User_Alias ​​byla tato práva udělena.

Tři rychlé sudo triky

Když zapomenete přidat sudo do příkazu, napište

sudo !!

A poslední příkaz se zopakuje se sudo přidaným na začátek řádku.

Jakmile použijete sudo a ověříte se pomocí svého hesla, nebudete muset své heslo používat s dalšími příkazy sudo po dobu 15 minut. Pokud chcete, aby vaše autentizace byla okamžitě zapomenuta, použijte:

sudo -k

Přemýšleli jste někdy, kde můžete vidět neúspěšné pokusy o příkaz sudo? Přejdou do souboru „/var/log/auth.log“. Můžete jej zobrazit pomocí:

less /var/log/auth.log

Můžeme vidět záznam pro uživatelský účet Mary, která byla přihlášena na TTY pts/1, když se pokusila spustit příkaz vypnutí jako uživatel „root“.

S velkou silou…

…přichází schopnost delegovat jeho části na ostatní. Nyní víte, jak selektivně zmocnit ostatní uživatele.