Práva v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Ahoj všichni. Toto je překlad článku z knihy RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 a EX300.

Z mého pohledu: Doufám, že článek bude užitečný nejen pro začátečníky, ale také pomůže zkušenějším administrátorům uspořádat své znalosti.

Tak pojďme na to.

Práva v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

K přístupu k souborům v Linuxu se používají oprávnění. Tato oprávnění jsou přiřazena třem subjektům: vlastníkovi souboru, skupině vlastníků a dalšímu subjektu (tj. všem ostatním). V tomto článku se dozvíte, jak se oprávnění aplikují.

Článek začíná přehledem základních pojmů, poté se diskutují speciální oprávnění a seznamy řízení přístupu (ACL). Na konci tohoto článku se proberou výchozí oprávnění pomocí umask a řízení pokročilých uživatelských atributů.

Správa vlastnictví souborů

Než začneme diskutovat o oprávněních, měli byste vědět o roli vlastníka souboru a adresáře. Vlastnictví souborů a adresářů je zásadní pro práci s oprávněními. V této části se nejprve dozvíte, jak můžete vidět vlastníka. Poté se dozvíte, jak změnit vlastníka skupiny a uživatele pro soubory a adresáře.

Zobrazení vlastníka souboru nebo adresáře

V Linuxu má každý soubor a každý adresář dva vlastníky: uživatele a vlastníka skupiny.

Tito vlastníci jsou nastaveni při vytvoření souboru nebo adresáře. Uživatel, který vytváří soubor, se stává vlastníkem tohoto souboru a primární skupina, do které tento uživatel patří, se také stává vlastníkem tohoto souboru. Abychom zjistili, zda máte jako uživatel přístupová práva k souboru nebo adresáři, shell kontroluje vlastnictví.

To probíhá v následujícím pořadí:

  1. Shell zkontroluje, zda jste vlastníkem souboru, ke kterému se chcete dostat. Pokud jste tímto vlastníkem, obdržíte oprávnění a shell přestane kontrolovat.
  2. Pokud nejste vlastníkem souboru, shell zkontroluje, zda jste členem skupiny, která má oprávnění k tomuto souboru. Pokud jste členem této skupiny, obdržíte přístup k souboru na základě oprávnění, která jsou nastavena pro tuto skupinu, a shell přestane kontrolovat.
  3. Pokud nejste ani uživatel, ani vlastník skupiny, obdržíte práva ostatních uživatelů (Other).

K zobrazení aktuálních přiřazení vlastníka můžete použít příkaz ls -l. Tento příkaz zobrazuje uživatele a vlastníka skupiny. Níže můžete vidět nastavení vlastníka pro adresáře v adresáři /home.

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

Pomocí příkazu ls můžete zobrazit vlastníka souborů v tomto adresáři. Někdy může být užitečné získat seznam všech souborů v systému, které mají uvedeného uživatele nebo skupinu jako vlastníka. K tomu můžete použít find. Argument find -user může být použit pro tento účel. Například následující příkaz zobrazuje všechny soubory, jejichž vlastníkem je uživatel linda:

find / -user linda

Můžete také použít find pro hledání souborů, kde je určité skupina jejich vlastníkem.

Například následující příkaz hledá všechny soubory patřící skupině users:

find / -group users

Změna vlastníka

Aby bylo možné aplikovat odpovídající oprávnění, prvním faktorem, který je třeba vzít v úvahu, je vlastnictví. K tomu existuje příkaz chown. Syntaxe tohoto příkazu je snadná na pochopení:

chown kdo co

Například následující příkaz mění vlastníka adresáře /home/account na uživatele linda:

chown linda /home/account

Tým chown má několik možností, z nichž jedna je obzvláště užitečná: -R. Můžete si domyslet, co dělá, protože tato možnost je k dispozici i pro mnoho dalších příkazů. Umožňuje vám rekurzivně nastavit vlastníka, což vám umožňuje nastavit vlastníka aktuálního adresáře a všeho, co se nachází pod ním. Následující příkaz mění vlastníka pro adresář /home a vše, co je pod ním, na uživatele linda:

Nyní vlastníci vypadají takto:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

Provedeme:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

Nyní se uživatel lisa stal vlastníkem adresáře account:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

Změna vlastníka skupiny

Existují dva způsoby, jak změnit vlastnictví skupiny. Můžete to udělat pomocí chown, ale existuje speciální příkaz s názvem chgrp, který tuto práci vykonává. Pokud chcete použít příkaz chown, použijte . nebo : před názvem skupiny.

Následující příkaz změní vlastníka skupiny /home/account na skupinu account:

chown .account /home/account

Můžete použít chown k tomu, abyste změnili vlastníka uživatele a/nebo skupiny několika způsoby. Zde je několik příkladů:

  • chown lisa myfile1 nastavuje uživatele lisa jako vlastníka souboru myfile1.
  • chown lisa.sales myfile nastavuje uživatele lisa jako vlastníka souboru myfile a také nastavuje skupinu sales jako vlastníka tohoto souboru.
  • chown lisa:sales myfile to je totéž jako předchozí příkaz.
  • chown .sales myfile nastavuje skupinu sales jako vlastníka souboru myfile bez změny vlastníka uživatele.
  • chown :sales myfile to je totéž jako předchozí příkaz.

Můžete použít příkaz chgrp, abyste změnili vlastníka skupiny. Podívejme se na následující příklad, kde můžete pomocí chgrp nastavit vlastníkem adresáře account skupinu sales:

chgrp .sales /home/account

Jak bylo uvedeno u chown, můžete použít volbu -R s chgrp, a také rekurzivně měnit vlastníka skupiny.

Porozumění výchozímu vlastnictví

Možná jste si všimli, že když uživatel vytvoří soubor, aplikuje se na něj výchozí vlastnictví.
Uživatel, který vytváří soubor, se automaticky stává vlastníkem tohoto souboru a primární skupina tohoto uživatele se automaticky stává vlastníkem tohoto souboru. Obvykle to je skupina, která je uvedena v souboru /etc/passwd jako primární skupina uživatele. Nicméně pokud je uživatel členem několika skupin, může změnit efektivní primární skupinu.

Aby ukázal aktuální efektivní primární skupinu, může uživatel použít příkaz groups:

[root@server1 ~]# groups lisa
lisa : lisa account sales

Pokud aktuální uživatel linda chce změnit efektivní primární skupinu, použije příkaz newgrp, za kterým následuje název skupiny, kterou chce nastavit jako novou efektivní primární skupinu. Po použití příkazu newgrp bude primární skupina aktivní, dokud uživatel nezadá příkaz exit nebo se neodhlásí.

Níže je ukázáno, jak uživatel linda používá tento příkaz, aby se primární skupinou stala skupina sales:

lisa@server1 ~]$ groups
lisa účet sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa účet
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 6. února 10:06 file1

Po změně aktivní hlavní skupiny obdrží všechny nové soubory vytvořené uživatelem tuto skupinu jako vlastníka skupiny. Pro návrat k původnímu nastavení primární skupiny použijte exit.

Abyste mohli použít příkaz newgrp, musí být uživatel členem té skupiny, kterou chce použít jako primární. Kromě toho může být skupinové heslo použito pro skupinu pomocí příkazu gpasswd. Pokud uživatel použije příkaz newgrp, ale není členem cílové skupiny, shell požádá o heslo skupiny. Po zadání správného hesla skupiny bude nastavena nová efektivní primární skupina.

Správa hlavních práv

Systém oprávnění Linuxu byl vynalezen v 70. letech 20. století. Vzhledem k tomu, že výpočetní potřeby byly v těch letech omezené, byla základní oprávnění velmi omezená. Tento systém oprávnění používá tři oprávnění, která mohou být aplikována na soubory a adresáře. V této části se naučíte, jak tato oprávnění používat a měnit.

Porozumění právům na čtení, zápis a provedení

Tři základní oprávnění vám umožňují číst, zapisovat a provádět soubory. Účinek těchto oprávnění se liší při použití na souborech nebo adresářích. Pokud se jedná o soubor, oprávnění na čtení vám dává právo otevřít soubor pro čtení. Tím pádem můžete přečíst jeho obsah, ale to znamená, že váš počítač může otevřít soubor, aby s ním něco udělal.

Programový soubor, který potřebuje přístup k knihovně, musí mít například přístup k této knihovně pro čtení. Z toho vyplývá, že oprávnění na čtení je nejzákladnější oprávnění, které potřebujete pro práci se soubory.

Pokud jde o adresář, čtení umožňuje zobrazit obsah tohoto adresáře. Musíte vědět, že toto oprávnění vám neumožňuje číst soubory v adresáři. Systém oprávnění Linuxu nezná dědění a jediný způsob, jak přečíst soubor, je použít oprávnění na čtení pro tento soubor.

Jak pravděpodobně víte, oprávnění pro zápis, pokud se uplatňuje na soubor, umožňuje zapisovat do souboru. Jinými slovy, umožňuje měnit obsah existujících souborů. Nicméně neumožňuje vytvářet nebo mazat nové soubory ani měnit oprávnění k souboru. K tomu potřebujete dát oprávnění pro zápis v adresáři, kde chcete soubor vytvořit. V adresářích toto oprávnění také umožňuje vytvářet a mazat nové podadresáře.

Oprávnění pro provádění je to, co potřebujete k provádění souboru. Nikdy nebude nastaveno jako výchozí, což činí Linux prakticky zcela odolným vůči virům. Jen někdo s oprávněním pro zápis v adresáři může aplikovat oprávnění pro provádění.

Níže je shrnuto použití základních oprávnění:

Práva v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Použití chmod

Pro správu oprávnění se používá příkaz chmod. Při používání chmod můžete nastavovat oprávnění pro uživatele (user), skupinu (group) a ostatní (other). Tento příkaz můžete použít ve dvou režimech: relativním režimu a absolutním režimu. V absolutním režimu se používají tři číslice pro nastavení základních oprávnění.

Práva v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Při nastavení oprávnění si vypočítejte potřebnou hodnotu. Pokud chcete nastavit čtení, zápis a provádění pro uživatele, čtení a provádění pro skupinu, a také čtení a provádění pro ostatní v souboru /somefile, použijete následující příkaz chmod:

chmod 755 /somefile

Když používáte chmod tímto způsobem, všechna aktuální oprávnění jsou nahrazena těmi, která jste nastavili.

Pokud chcete změnit oprávnění na základě aktuálních oprávnění, můžete použít chmod v relativním režimu. Při použití chmod v relativním režimu pracujete se třemi indikátory, které určují, co chcete udělat:

  1. Nejprve určíte, pro koho chcete změnit oprávnění. K tomu můžete zvolit mezi uživateli (u), skupinou (g) a ostatními (o).
  2. ). Pak používáte operátor pro přidání nebo odebrání oprávnění z aktuálního režimu nebo je nastavíte úplně.
  3. Na konci použijete jsou rovny nule., w a x, abyste určili, jaká oprávnění chcete nastavit.

Při změně oprávnění v relativním režimu můžete vynechat část „komu“, abyste přidali nebo odebrali oprávnění pro všechny objekty. Například tento příkaz přidává oprávnění k vykonávání pro všechny uživatele:

chmod +x somefile

Při práci v relativním režimu můžete také používat složitější příkazy. Například tento příkaz přidává oprávnění pro zápis do skupiny a odebere čtení pro ostatní:

chmod g+w,o-r somefile

Při používání chmod -R o+rx /data nastavujete oprávnění k vykonávání pro všechny adresáře a také pro soubory v adresáři /data. Chcete-li nastavit oprávnění k vykonávání pouze pro adresáře, a ne pro soubory, použijte chmod -R o+ rX /data.

Velké písmeno X zaručuje, že soubory nezískají oprávnění k vykonávání, pokud soubor již neměl oprávnění k vykonávání pro některé objekty. To dělá X rozumnějším způsobem práce s oprávněními k vykonávání; umožní to vyhnout se nastavení tohoto oprávnění na souborech, kde není potřeba.

Pokročilá oprávnění

Kromě základních oprávnění, o kterých jste právě četli, existuje v Linuxu také soubor pokročilých oprávnění. Není to ta oprávnění, která nastavujete ve výchozím nastavení, ale někdy poskytují užitečné doplnění. V této části se dozvíte, co to je a jak je nastavit.

Pochopení pokročilých oprávnění SUID, GUID a sticky bit

Existují tři pokročilá oprávnění. První z nich je oprávnění k nastavení identifikátoru uživatele (SUID). V některých zvláštních případech můžete toto oprávnění použít na spustitelné soubory. Ve výchozím nastavení uživatel, který spouští spustitelný soubor, spouští tento soubor se svými vlastními oprávněními.

Pro běžné uživatele obvykle znamená, že použití programu je omezeno. Nicméně v některých případech potřebuje uživatel speciální oprávnění, pouze pro vykonání určitého úkolu.

Zvažme například situaci, kdy uživatel potřebuje změnit své heslo. K tomu musí uživatel zapsat své nové heslo do souboru /etc/shadow. Nicméně tento soubor není přístupný pro zápis uživatelům, kteří nemají root přístup:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

Oprávnění SUID nabízí řešení tohoto problému. V utilitě /usr/bin/passwd se toto oprávnění používá automaticky. To znamená, že při změně hesla uživatel dočasně získává práva root, což mu umožňuje zapisovat do souboru /etc/shadow. Oprávnění SUID můžete vidět s ls -l jak s na místě, kde byste obvykle očekávali vidět x pro uživatelská oprávnění:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

Oprávnění SUID může vypadat užitečně (a v některých případech opravdu je), ale zároveň je potenciálně nebezpečné. Při nesprávném použití můžete omylem udělit práva root. Proto doporučuji používat ho pouze s maximální opatrností.

Většina správců to nikdy nebude potřebovat; uvidíte ho pouze v některých souborech, kde ho operační systém musí nastavit automaticky.

Druhé speciální oprávnění je identifikátor skupiny (SGID). Toto oprávnění má dva účinky. Když je použito na spustitelný soubor, dává uživateli, který soubor spouští, oprávnění vlastníka skupiny tohoto souboru. Tak SGID může vykonat více či méně to stejné, co SUID. Nicméně pro tento účel se SGID prakticky nepoužívá.

Stejně jako u oprávnění SUID, SGID se aplikuje na některé systémové soubory jako výchozí nastavení.

Když je aplikováno na adresář, SGID může být užitečné, protože je můžete použít k nastavení výchozího vlastníka skupiny pro soubory a podadresáře vytvořené v tomto adresáři. Výchozím způsobem, když uživatel vytvoří soubor, je jeho efektivní primární skupina nastavena jako vlastník skupiny pro tento soubor.

To není vždy velmi užitečné, zejména proto, že uživatelé Red Hat/CentOS mají jako primární skupinu skupinu se stejným názvem jako uživatel, a z nichž je uživatel jediným členem. Takže soubory, které uživatel vytváří, budou výchozími skupinovými soubory pro sdílení.

Představte si situaci, kdy uživatelé linda a lori pracují v účetnictví a jsou členy skupiny account. Výchozí situace je taková, že tito uživatelé jsou členy soukromé skupiny, jejímž jediným členem jsou. Oba uživatelé jsou však členy skupiny account, ale také jako sekundární skupiny.

Situace ve výchozím nastavení je taková, že když kterýkoli z těchto uživatelů vytvoří soubor, hlavní skupina se stane vlastníkem. Proto ve výchozím nastavení linda nemůže přistupovat k souborům vytvořeným lori a naopak. Pokud však vytvoříte sdílený skupinový adresář (řekněme, /groups/account) a zajistíte, že oprávnění SGID je aplikováno na tento adresář a že účet skupiny je nastaven jako vlastník skupiny pro tento adresář, všechny soubory vytvořené v tomto adresáři a ve všech jeho podadresářích budou mít také skupinu account jako výchozí skupinového vlastníka.

Z tohoto důvodu je oprávnění SGID velmi užitečné oprávnění pro nastavení v adresářích sdílených skupin.

Oprávnění SGID se zobrazuje ve výstupu ls -l jak s na pozici, kde obvykle najdete oprávnění pro spuštění skupiny:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

Třetím ze zvláštních oprávnění je sticky bit. Toto oprávnění je užitečné pro ochranu souborů před náhodným smazáním v prostředí, kde mají více uživatelé práva na zápis do stejného adresáře. Pokud je aplikován sticky bit, uživatel může smazat soubor pouze v případě, že je uživatelem-vlastníkem souboru nebo adresáře, ve kterém se soubor nachází. Z tohoto důvodu se používá jako výchozí oprávnění pro adresář /tmp a může být také užitečné pro adresáře sdílených skupin.

Bez sticky bit, pokud může uživatel vytvářet soubory v adresáři, může také mazat soubory z tohoto adresáře. V prostředí veřejné skupiny to může být nepříjemné. Představte si uživatele linda a lori, kteří oba mají práva na zápis do adresáře /data/account a tato oprávnění získali díky členství ve skupině account. Proto může linda mazat soubory vytvořené lori a naopak.

Když použijete sticky bit, uživatel může mazat soubory pouze v případě, že je splněna jedna z následujících podmínek:

  • Uživatel je vlastníkem souboru;
  • Uživatel je vlastníkem adresáře, ve kterém se soubor nachází.

Při používání ls -l, můžete vidět sticky bit jako t na místě, kde obvykle vidíte oprávnění k provádění pro ostatní:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

Použití rozšířených práv

Chcete-li použít SUID, SGID a sticky bit, můžete také použít chmod. SUID má číselnou hodnotu 4, SGID má číselnou hodnotu 2 a sticky bit má číselnou hodnotu 1.

Pokud chcete tato oprávnění použít, musíte přidat čtyřmístný argument do chmod, první číslice se vztahuje na speciální oprávnění. Následující řádek například přidá oprávnění SGID k adresáři a nastaví rwx pro uživatele a rx pro skupinu a ostatní:

chmod 2755 /somedir

To je poměrně nepraktické, pokud potřebujete nejprve zkontrolovat aktuální oprávnění, která jsou nastavena, než budete pracovat s chmod v absolutním módu. (Hrozí vám přepsání oprávnění, pokud to neuděláte.) Proto doporučuji pracovat v relativním módu, pokud potřebujete aplikovat jakákoli z těchto speciálních oprávnění:

  1. Pro SUID použijte chmod u+s.
  2. Pro SGID použijte chmod g+s.
  3. Pro sticky bit použijte chmod +t, a poté název souboru nebo adresáře, pro který chcete nastavit oprávnění.

V tabulce je shrnuto vše, co je důležité vědět o správě speciálních oprávnění.

Práva v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Příklad práce se speciálními právy

V tomto příkladu používáte speciální oprávnění, aby členové skupiny mohli snadněji sdílet soubory v adresáři sdílené skupiny. Přidělujete ID bit nastaveného identifikátoru skupiny a také sticky bit a vidíte, že po jejich nastavení se přidávají funkce usnadňující spolupráci členů skupiny.

  1. Otevřete terminál, ve kterém jste uživatel linda. Vytvoření uživatele lze provést příkazem useradd linda, přidejte heslo passwd linda.
  2. Vytvořte v kořenovém adresáři adresář /data a podadresář /data/sales pomocí příkazu mkdir -p /data/sales. Proveďte cd /data/sales, abyste přešli do adresáře sales. Proveďte touch linda1 a touch linda2, abyste vytvořili dva prázdné soubory, jejichž vlastníkem je linda.
  3. Proveďte su — lisa pro přepnutí aktuálního uživatele na uživatele lisa, který je také členem skupiny sales.
  4. Proveďte cd /data/sales a z tohoto adresáře proveďte ls -l. Uvidíte dva soubory, které vytvořil uživatel linda a patří skupině linda. Proveďte rm -f linda*. To odstraní oba soubory.
  5. Proveďte touch lisa1 a touch lisa2, abyste vytvořili dva soubory, které patří uživateli lisa.
  6. Proveďte su — pro zvýšení vašich privilegií na úroveň root.
  7. Proveďte chmod g+s,o+t /data/sales, abyste nastavili bit skupinového identifikátoru (GUID) a také sticky bit v adresáři sdílené skupiny.
  8. Proveďte su - linda. Pak vykonejte touch linda3 a touch linda4. Nyní byste měli vidět, že dva vámi vytvořené soubory patří do skupiny sales, která je vlastníkem skupiny adresáře /data/sales.
  9. Proveďte rm -rf lisa*. Sticky bit brání odstranění těchto souborů jménem uživatele linda, protože nejste vlastníkem těchto souborů. Všimněte si, že pokud je uživatel linda vlastníkem adresáře /data/sales, může tyto soubory i tak odstranit!

Správa ACL (setfacl, getfacl) v Linuxu

I když rozšířené oprávnění, o kterých jsme hovořili výše, přidává užitečné funkce k tomu, jak Linux pracuje s oprávněními, neumožňuje vám udělovat oprávnění více než jednomu uživateli nebo jedné skupině v jednom souboru.

Seznamy řízení přístupu nabízejí tuto funkci. Kromě toho umožňují správcům nastavovat výchozí oprávnění složitým způsobem, kde mohou být nastavená oprávnění různá v různých adresářích.

Chápání ACL

I když subsystém ACL přidává skvělé funkce vašemu serveru, má jednu nevýhodu: ne všechny nástroje ji podporují. Proto můžete ztratit nastavení ACL při kopírování nebo přesouvání souborů a zálohovací software nemusí provést zálohování nastavení ACL.

Nástroj tar nepodporuje ACL. Abyste se ujistili, že nastavení ACL nebudou ztracena při vytváření zálohy, použijte star místo tar. star práce se stejnými parametry jako tar; jednoduše přidává podporu pro nastavení ACL.

Také můžete vytvořit zálohu ACL pomocí getfacl, kterou můžete obnovit pomocí příkazu setfacl. Abyste vytvořili zálohu, použijte getfacl -R /directory > file.acls. Chcete-li obnovit nastavení ze záložního souboru, použijte setfacl --restore=file.acl.

Nedostatek podpory některými nástroji by neměl být problémem. Seznamy ACL se často aplikují na adresáře jako strukturální opatření, nikoli na jednotlivé soubory.
Proto nebude mnoho, ale pouze několik, umístěných na strategických místech souborového systému. Obnovení původních seznamů ACL, se kterými jste pracovali, je tedy relativně jednoduché, i když váš zálohovací software je nepodporuje.

Příprava souborového systému pro ACL

Před zahájením práce s ACL může být nutné připravit souborový systém na podporu ACL. Vzhledem k tomu, že je třeba rozšířit metadata souborového systému, ne vždy existuje výchozí podpora pro ACL v souborovém systému. Pokud při nastavování seznamů ACL pro souborový systém dostanete zprávu „operace není podporována“, může to znamenat, že váš souborový systém nepodporuje ACL.

Abychom to napravili, je třeba přidat možnost acl mount do souboru /etc/fstab, aby byl souborový systém připojen s podporou ACL ve výchozím nastavení.

Změna a zobrazení nastavení ACL pomocí setfacl a getfacl

Chcete-li nastavit ACL, potřebujete příkaz setfacl. Chcete-li vidět aktuální nastavení ACL, potřebujete getfacl. Příkaz ls -l neukazuje žádné existující ACL; pouze zobrazuje + po seznamu oprávnění, což naznačuje, že seznamy ACL se aplikují i na soubor.

Před konfigurací seznamů ACL je vždy užitečné zobrazit aktuální nastavení ACL pomocí getfacl. Níže v příkladu můžete vidět aktuální přístupová práva, jak jsou znázorněna pomocí ls -l, stejně jako je znázorněno s getfacl. Pokud se podíváte dostatečně pozorně, uvidíte, že zobrazené informace jsou zcela shodné.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Odstraňuji přípony '/' z absolutních názvů cest
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Na základě provedení příkazu getfacl je níže vidět, že oprávnění jsou zobrazena pro tři různé objekty: uživatele, skupinu a ostatní. Nyní přidejme ACL, aby skupině sales byla udělena práva na čtení a spouštění. Příkaz pro to je setfacl -m g:sales:rx /dir. V tomto příkazu -m označuje, že je třeba změnit aktuální nastavení ACL. Poté g:sales:rx sděluje příkazu, že má nastavit ACL pro čtení a provádění (rx) pro skupinu (g) sales. Níže můžete vidět, jak vypadá příkaz, stejně jako výstup příkazu getfacl po změně aktuálních nastavení ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Odstraňuji přípony '/' z absolutních názvů cest
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Nyní, když rozumíte, jak nastavit skupinový ACL, je snadné pochopit ACL pro uživatele a další uživatele. Například příkaz setfacl -m u:linda:rwx /data uděluje oprávnění uživateli linda v adresáři /data, aniž by se stal vlastníkem, a nemění přiřazení aktuálního vlastníka.

Tým setfacl má mnoho možností a voleb. Jedna volba je obzvláště důležitá, parametr -R. Pokud je použit, tato možnost provede nastavení ACL pro všechny soubory a podsložky, které v současné době existují v adresáři, kde nastavujete ACL. Doporučuje se vždy tuto možnost používat při změně seznamů ACL pro existující adresáře.

Práce s ACL podle výchozího nastavení

Jednou z výhod používání seznamů ACL je, že můžete udělit oprávnění více uživatelům nebo skupinám v adresáři. Další výhodou je, že můžete zahrnout dědičnost, když pracujete s ACL podle výchozího nastavení.

Nastavením výchozího ACL určíte oprávnění, která budou nastavena pro všechny nové položky vytvářené v adresáři. Mějte na paměti, že výchozí ACL nemění oprávnění pro existující soubory a podsložky. Chcete-li je změnit, musíte přidat i běžný ACL!

Je důležité to vědět. Pokud chcete používat ACL k nastavení přístupu několika uživatelů nebo skupin k jedné a téže složce, musíte nastavit ACL dvakrát. Nejprve použijte setfacl -R -m, abyste změnili ACL pro aktuální soubory. Poté použijte setfacl -m d:, abyste se postarali o všechny nové položky, které budou také vytvořeny.

Pro nastavení výchozího ACL stačí přidat možnost – perioda anténní mřížky (vzdálenost mezi sousedními prvky), po možnosti -m (pořadí má význam!). Takže použijte setfacl -m d:g:sales:rx /data, pokud chcete, aby prodejní skupina mohla číst a vykonávat vše, co kdy bude vytvořeno v adresáři /data.

Při používání seznamů ACL podle výchozího nastavení může být také užitečné nastavit ACL pro ostatní. Obvykle to nedává velký smysl, protože můžete také změnit oprávnění pro ostatní pomocí chmod. Však to, co nemůžete udělat pomocí chmod, to specify the rights that should be granted to other users for each new file that will ever be created. If you want others not to have any permissions for anything created in /data, for example, use setfacl -m d:o::- /data.

ACL and regular permissions are not always well integrated. Issues can arise if you apply default ACLs to a directory, after which items are added to that directory, and then you try to change the regular permissions. Changes that are applied to regular permissions will not be well reflected in the ACL overview. To avoid problems, first set the regular permissions, then set the default ACL (and after that, try not to change them again).

Example of managing extended permissions using ACL

In this example, you will continue to work with the directories /data/account and /data/sales that you created earlier. In previous examples, you ensured that the sales group has permissions for /data/sales, while the account group has permissions for /data/account.

First, ensure that the account group has read permissions in the /data/sales directory, and that the sales group has read permissions in the /data/account directory.

Then you set the default ACLs to ensure that all new files have the correct permissions for all new items.

  1. Open the terminal.
  2. Proveďte setfacl -m g:account:rx /data/sales a setfacl -m g:sales:rx /data/account.
  3. Proveďte getfacl, to ensure that the access rights were set as you wanted.
  4. Proveďte setfacl -m d:g:account:rwx,g:sales:rx /data/sales, to set the default ACL for the sales directory.
  5. Add a default ACL for the /data/account directory using setfacl -m d:g:sales:rwx,g:account:rx /data/account.
  6. Make sure that the ACL settings are effective by adding a new file to /data/sales. Execute touch /data/sales/newfile and execute getfacl /data/sales/newfile to check the current permissions.

Setting default permissions using umask

Above you learned how to work with default ACLs. If you are not using ACLs, there is a shell option that determines the default permissions you will get: umask (the inverse mask). In this section, you will learn how to change default permissions using umask.

You probably noticed that when creating a new file, some default permissions are set. These permissions are determined by the setting umaskTato shellová volba se aplikuje na všechny uživatele při přihlášení do systému. V parametru umask se používá číselná hodnota, která se odečítá od maximálních oprávnění, která mohou být automaticky nastavena pro soubor; maximální nastavení pro soubory je 666 a pro adresáře 777.

Nicméně existují určité výjimky z tohoto pravidla. Můžete najít úplný přehled nastavení umask v tabulce níže.

Z čísel používaných v umask, stejně jako v případě číselných argumentů pro příkaz chmod, první číslo se vztahuje k oprávněním uživatele, druhé číslo se vztahuje k oprávněním skupiny a poslední se vztahuje k výchozím oprávněním nastaveným pro ostatní. Hodnota umask ve výchozím nastavení 022 dává 644 pro všechny nové soubory a 755 pro všechny nové adresáře vytvořené na vašem serveru.

Úplný přehled všech číselných hodnot umask a jejich výsledků je v tabulce níže.

Práva v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Jednoduchý způsob, jak vidět, jak funguje parametr umask, vypadá následovně: začněte s výchozími oprávněními pro soubor nastavenými na 666 a odečtěte umask, abyste získali platná oprávnění. Udělejte totéž pro adresář a jeho výchozí oprávnění 777.

Existují dva způsoby, jak změnit nastavení umask: pro všechny uživatele a pro jednotlivé uživatele. Pokud chcete nastavit umask pro všechny uživatele, musíte zajistit, že parametr umask je zohledněn při spuštění souborů prostředí shellu, jak je uvedeno v /etc/profile. Správný přístup je vytvořit skript shellu s názvem umask.sh v adresáři /etc/profile.d a uvést umask, který chcete použít v tomto skriptu shellu. Pokud se v tomto souboru změní umask, platí pro všechny uživatele po přihlášení na server.

Alternativou k nastavení umask přes /etc/profile a související soubory, kde se aplikuje na všechny uživatele přihlašující se do systému, je změna nastavení umask v souboru s názvem .profile, který se vytvoří v domovském adresáři každého uživatele.

Nastavení aplikovaná v tomto souboru se vztahují pouze na jednotlivého uživatele; tudíž je to dobrá metoda, pokud potřebujete více detailů. Osobně se mi líbí tato funkce, abych změnil výchozí hodnotu umask pro uživatele root na 027, zatímco běžní uživatelé pracují s výchozím umask 022.

Práce s rozšířenými atributy uživatele

Toto je závěrečná část o právech v Linuxu.

Při práci s oprávněními vždy existuje vazba mezi objektem uživatele nebo skupiny a oprávněními, která tyto objekty mají pro soubor nebo adresář. Alternativní metodou ochrany souborů na serveru Linux je práce s atributy.
Atributy vykonávají svou funkci nezávisle na uživateli, který k souboru přistupuje.

Stejně jako u ACL může být pro atributy souboru nutné aktivovat volbu mount.

Je to možnost user_xattr. Pokud se při práci s rozšířenými atributy uživatele dostanete k chybě "operace není podporována", ujistěte se, že je v souboru mount nastaven parametr /etc/fstab.

Mnoho atributů je zdokumentováno. Některé atributy jsou dostupné, ale ještě nebyly implementovány. Nepoužívejte je; nic vám nepřinesou.

Níže jsou uvedeny nejvíce užitečné atributy, které můžete použít:

A Tento atribut zajišťuje, že čas přístupu k souboru se nemění.
Obvykle, když se soubor otevře, čas přístupu by měl být zaznamenán v metadatech souboru. To má negativní vliv na výkon; proto pro soubory, ke kterým je pravidelný přístup, lze atribut A použít k deaktivaci této funkce.

a Tento atribut umožňuje přidávat, ale ne odstraňovat soubory.

s Pokud používáte souborový systém, který podporuje kompresi na úrovni svazku, tento atribut souboru zajišťuje, že se soubor při prvním zapnutí mechanismu komprese komprimuje.

DDoS Tento atribut zajišťuje, že změny v souborech se zapisují na disk okamžitě, nikoli nejprve do cache. To je užitečný atribut pro důležité databázové soubory, který zajišťuje, že se neztratí mezi souborovým cache a pevným diskem.

– perioda anténní mřížky (vzdálenost mezi sousedními prvky), Tento atribut zajišťuje, že soubor nebude zachován v zálohách, kde se používá nástroj dump.

I Tento atribut aktivuje indexaci pro adresář, ve kterém je zahrnut. To nabízí rychlejší přístup k souborům pro primitivní souborové systémy, jako je Ext3, které nepoužívají databázi B-tree pro rychlý přístup k souborům.

i Tento atribut činí soubor neměnným. Není tedy možné provádět změny v souboru, což je užitečné pro soubory, které potřebují dodatečnou ochranu.

j Tento atribut zaručuje, že v souborovém systému ext3 bude soubor nejprve zapsán do protokolu, a poté do datových bloků na pevném disku.

s Přepsat bloky, ve kterých byl soubor uložen, na 0 po odstranění souboru. To zaručuje, že obnovení souboru je po jeho odstranění nemožné.

u Tento atribut uchovává informace o odstranění. To umožňuje vyvinout nástroj, který pracuje s těmito informacemi k obnově odstraněných souborů.

Pokud chcete použít atributy, můžete použít příkaz chattr. Například použijte chattr +s somefile, abyste na somefile aplikovali atributy. Chcete atribut odstranit? Pak použijte chattr -s somefile, a ten bude odstraněn. Chcete-li získat přehled všech aktuálně aplikovaných atributů, použijte příkaz lsattr.

Shrnutí

V tomto článku jste se naučili, jak pracovat s oprávněními. Přečetli jste si o třech základních oprávněních, rozšířených oprávněních a o tom, jak aplikovat ACL seznamy v souborovém systému. Také jste se dozvěděli, jak používat parametr umask k aplikaci výchozích oprávnění. Na konci tohoto článku jste se naučili, jak používat rozšířené uživatelské atributy pro aplikaci další úrovně bezpečnosti souborového systému.

Pokud se vám tento překlad líbil, napište o tom prosím do komentářů. Bude to větší motivace pro další užitečné překlady.

V článku jsem opravil některé překlepy a gramatické chyby. Zmenšil jsem některé objemné odstavce na menší pro lepší čitelnost.

Místo "Pouze někdo s administrátorskými právy na adresář může aplikovat oprávnění k vykonávání." jsem opravil na "Pouze někdo s právy zápisu na adresář může aplikovat oprávnění k vykonávání.", což bude správnější.

Děkuji za připomínky berez.

Nahradil jsem:
Pokud nejste vlastníkem souboru, shell zkontroluje, zda jste členem skupiny, která se také nazývá skupina souboru.

Na:
Pokud nejste vlastníkem souboru, shell zkontroluje, zda jste členem skupiny, která má oprávnění k tomuto souboru. Pokud jste členem této skupiny, obdržíte přístup k souboru na základě oprávnění, která jsou nastavena pro tuto skupinu, a shell přestane kontrolovat.

Děkuji za připomínku CryptoPirate

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster