Tento výukový kurz podrobně popisuje seznamy řízení přístupu v Linuxu, k čemu se používají a jak je spravovat.

Jako správce systému pravděpodobně trávíte dost času nastavováním oprávnění pro uživatele a skupiny v systému.

Oprávnění k souborům jsou již poměrně praktická, abyste mohli adresářům nebo souborům přidělovat oprávnění ke čtení, zápisu nebo spuštění.

Ale co když potřebujeme přesnější způsob udělování oprávnění ke složkám nebo souborům?

Co když chci udělit přístup k souboru konkrétnímu uživateli nebo konkrétní skupině, která není aktuálním vlastníkem souboru?

Přesně to řeší v systému Linux seznamy řízení přístupu, zkráceně také ACL.

V dnešním kurzu se velmi podrobně podíváme na seznamy řízení přístupu, co jsou zač a jak se používají, abychom správně nakonfigurovali systém Linux.

Jste připraveni?

Obsah

Co se naučíte

Pokud budete tento výukový kurz sledovat až do konce, dozvíte se o následujících tématech:

  • Co jsou to seznamy řízení přístupu a jak je lze vyčíst z příkazu ls;
  • Jak nastavit základní práva k souboru pomocí příkazu setfacl:
  • Jak číst seznamy řízení přístupu pomocí příkazu getfacl;
  • Co je maska seznamu řízení přístupu a jak ji číst;
  • Jaké jsou výchozí hodnoty seznamu řízení přístupu a jak je lze efektivně použít

To je poměrně dlouhý program, takže bez dalších řečí začneme stručnou definicí toho, co jsou to seznamy řízení přístupu.

Základy seznamů řízení přístupu v systému Linux

V systému Linux existují dva způsoby nastavení oprávnění pro uživatele a skupiny : pomocí běžných oprávnění k souborům nebo pomocí seznamů řízení přístupu.

Definice seznamů řízení přístupu

Seznamy řízení přístupu se v souborových systémech systému Linux používají k nastavení vlastních a osobnějších oprávnění k souborům a složkám. Seznamy řízení přístupu (ACL) umožňují vlastníkům souborů nebo privilegovaným uživatelům udělovat práva konkrétním uživatelům nebo konkrétním skupinám.

V Linuxu, jak asi víte, jsou oprávnění rozdělena do tří kategorií : jedna pro vlastníka souboru, jedna pro skupinu a jedna pro ostatní.

V některých případech však můžete chtít udělit přístup k adresáři (například oprávnění ke spuštění) konkrétnímu uživateli, aniž byste tohoto uživatele museli zařadit do skupiny daného souboru.

Přesně proto byly seznamy řízení přístupu vůbec vynalezeny.

Seznamy řízení přístupu

V systému Linux nejsou seznamy řízení přístupu povoleny při vytváření nového souboru nebo adresáře na hostiteli (s výjimkou případů, kdy má nadřazený adresář některé ACL předdefinovány).

Chcete-li zjistit, zda jsou pro soubor nebo adresář definovány seznamy řízení přístupu, spusťte příkaz ls a na konci řádku s oprávněním hledejte znak „+“.

$ ls -l

Pro ukázku rozdílu uvádíme rozdíl při výpisu souborů v minimální instanci.

Teď, když už máte nějaké základy o seznamech řízení přístupu, se podíváme, jak můžete začít vytvářet základní seznamy řízení přístupu pro soubory a adresáře.

Vytváření seznamů řízení přístupu v Linuxu

Předtím, než začnete s příkazy ACL, je důležité mít na hostiteli nainstalované balíčky.

Kontrola instalace balíčků ACL

To nemusí být váš případ, pokud jste se rozhodli mít spuštěný minimální server.

Začněte kontrolou nápovědy týkající se příkazu setfacl spuštěním následujícího příkazu

$ setfacl --help

Pokud váš hostitel nemůže najít příkaz setfacl, ujistěte se, že máte nainstalované potřebné balíčky pro správu ACL.

$ sudo apt-get install acl -y

Poznamenejte, že ke spuštění tohoto příkazu budete v Debianu 10 potřebovat práva sudo.

Spusťte příkaz setfacl a ujistěte se, že tentokrát vidíte pomocné příkazy.

Jelikož je váš hostitel správně nakonfigurován, podívejme se, jak příkaz setfacl funguje.

Nastavení seznamů řízení přístupu pomocí příkazu setfacl

U seznamů řízení přístupu existují dva hlavní příkazy, které si musíte zapamatovat : setfacl a getfacl.

V této kapitole se podíváme na příkaz setfacl, protože příkaz getfacl je celkem samozřejmý.

Příkaz setfacl se v systému Linux používá k vytváření, úpravě a odstraňování seznamů řízení přístupu k souboru nebo adresáři.

Příkaz setfacl má následující syntaxi

$ setfacl {-m, -x} {u, g}:<name>: <file, directory>

Kde kudrnaté závorky znamenají jednu z následujících možností a běžné závorky jednu nebo více položek.

  • -m : znamená, že chcete upravit jednu nebo více položek ACL u souboru nebo adresáře.
  • -x : znamená, že chcete odstranit jednu nebo více položek ACL u souboru nebo adresáře.
  • {u, g} : pokud chcete upravit ACL pro uživatele nebo pro skupinu.
  • name : jedná se o nepovinný parametr, lze jej vynechat, pokud chcete nastavit položky ACL pro každého uživatele nebo pro každou skupinu na hostiteli.
  • : chcete-li nastavit oprávnění ke čtení, zápisu nebo spuštění souboru nebo adresáře.

Chcete-li například nastavit konkrétní oprávnění k zápisu pro uživatele do souboru, napíšete následující příkaz

$ setfacl -m u:user:w <file, directory>

Chcete-li nastavit oprávnění ke spuštění pro všechny uživatele na vašem hostiteli, byste napsali následující příkaz

$ setfacl -m u::x <file, directory>

Chcete-li nastavit plná oprávnění pro určitou skupinu na hostiteli, napsali byste příkaz setfacl takto

$ setfacl -m g:group:rwx <file, directory>

Nyní řekněme, že chcete odstranit položku ACL ze souboru.

Chcete-li ze souboru odebrat položku pro konkrétního uživatele, zadali byste volbu x.

Poznámka : nelze odebrat konkrétní práva z jedné položky ACL, což znamená, že nelze odebrat práva pro zápis a ponechat aktivní práva pro čtení ACL.

$ setfacl -x u:<user> <file, directory>

Podobně pro odstranění seznamu ACL týkajícího se skupin na vašem hostiteli byste napsali následující příkaz

$ setfacl -x g:<group> <file, directory>

Teď, když jste viděli, jak můžete v Linuxu snadno vytvářet seznamy řízení přístupu, je čas podívat se, jak můžete kontrolovat existující seznamy řízení přístupu k souborům a adresářům.

Vypsání seznamů řízení přístupu pomocí příkazu getfacl

Příkaz getfacl se v systému Linux používá k vypsání úplného výpisu všech běžných oprávnění a oprávnění seznamů řízení přístupu k souboru nebo adresáři.

Příkaz getfacl lze použít s následující syntaxí

$ getfacl <file, directory>

Příkaz getfacl je rozdělen do několika kategorií :

  • Název souboru, vlastník a skupina : informace o vlastnictví uživatele a skupiny se zobrazují nahoře;
  • Oprávnění uživatele : nejprve byste našli běžná oprávnění uživatele, nazývaná také vlastník, následovaná všemi záznamy ACL specifickými pro uživatele (nazývanými pojmenovaní uživatelé)
  • Oprávnění skupiny : vlastnické skupiny, za nimiž následují položky ACL specifické pro skupiny, nazývané také pojmenované skupiny
  • Maska : která omezuje oprávnění přidělená položkám ACL, maska bude podrobně popsána v další části;
  • Ostatní oprávnění : tato oprávnění jsou vždy aktivní a je to poslední zkoumaná kategorie, pokud se žádná jiná oprávnění neshodují s aktuálním uživatelem nebo skupinou.

Práce s maskou seznamů řízení přístupu

Jak jste si pravděpodobně všimli z posledního snímku obrazovky, mezi pojmenovanými skupinami a ostatními oprávněními je položka maska.

Ale k čemu tato maska slouží?

Maska ACL se liší od masky pro vytváření souborů (umask) a používá se za účelem omezení stávajících položek ACL existujících na souboru nebo adresáři.

Maska ACL se používá jako maximální sada oprávnění ACL bez ohledu na existující oprávnění, která masku ACL překračují.

Jako vždy platí, že diagram mluví za sto slov.

Maska ACL se aktualizuje při každém spuštění příkazu setfacl, pokud příznakem -n nezadáte, že nechcete masku aktualizovat.

Chcete-li zabránit aktualizaci masky, spusťte příkaz setfacl s následujícím příkazem

$ setfacl -n -m u:antoine:rwx <file, directory>

Jak vidíte v tomto příkladu, nastavil jsem uživateli „antoine“ plná práva k souboru.

Maska je nastavena tak, že omezuje oprávnění na čtení a zápis.

V důsledku toho jsou „efektivní oprávnění“ nastavená na tomto souboru pro tohoto uživatele čtení a zápis, oprávnění ke spuštění není uděleno.

Poznámka : pokud se vaše maximální sada oprávnění liší od zadání masky, zobrazí se efektivní řádek vypočítávající „skutečnou“ sadu použitých záznamů ACL.

Vytvoření výchozích seznamů řízení přístupu k adresářům

Jak již bylo uvedeno v tomto článku, je možné vytvářet položky ACL k adresářům a fungují stejným způsobem jako seznamy řízení přístupu k souborům.

Je zde však malý rozdíl, pokud jde o adresáře : máte možnost vytvořit výchozí položky seznamů řízení přístupu.

Výchozí položky seznamů řízení přístupu se používají k vytvoření položek ACL na adresáři, které budou dědit objekty v tomto adresáři, jako jsou soubory nebo podadresáře.

Při vytváření výchozích položek ACL :

  • Soubory vytvořené v tomto adresáři zdědí položky ACL zadané v nadřazeném adresáři
  • Podadresáře vytvořené v tomto adresáři zdědí položky ACL i výchozí položky ACL z nadřazeného adresáře.

Chcete-li vytvořit výchozí položky ACL, zadejte při nastavování ACL pomocí příkazu setfacl možnost -d.

$ setfacl -d -m {u, g}:<name>: <directory>

Chcete-li například přiřadit oprávnění ke čtení všem souborům vytvořeným v adresáři, spusťte následující příkaz

$ setfacl -d -m u::r directory

Při vytvoření souboru v tomto adresáři acl nyní uvidíte, že se na soubor použijí výchozí položky ACL.

Podobně, když je v adresáři acl vytvořen adresář, zdědí výchozí položky ACL zadané v nadřazeném adresáři.

Všimněte si, že se doporučuje zadat výchozí oprávnění pro všechny tři kategorie (uživatel, skupina a ostatní).

Zadání jedné ze tří položek totiž vytvoří zbývající dvě s oprávněními souvisejícími s maskou pro vytváření souborů.

Odstranění výchozích seznamů řízení přístupu k adresářům

Chcete-li odstranit výchozí existující seznamy řízení přístupu k adresářům, použijte příznak -k u příkazu setfacl.

$ setfacl -k <directory>

Podle příkladu, který jsme uvedli dříve, je zde uveden postup pro odstranění výchozích položek

$ setfacl -k acl-directory

Všimněte si, že odstranění položek ACL z nadřazeného adresáře neodstraní položky ACL v souborech nebo adresářích obsažených v nadřazeném adresáři.

Chcete-li odstranit výchozí položky ACL v adresáři a všech podadresářích, museli byste použít rekurzivní volbu (-R)

$ setfacl -kR <directory>

Závěr

V tomto kurzu jste se seznámili se seznamy řízení přístupu v systému Linux, příkazem getfacl a setfacl.

Dozvěděli jste se více o masce seznamů řízení přístupu a o tom, jak se používají výchozí ACL pro vytváření záznamů ACL na souborech a podadresářích obsažených v nadřazeném adresáři.

Pokud vás správa systému Linux zajímá, máme na toto téma mnoho dalších výukových kurzů, určitě si je přečtěte!

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.