Oprávnění 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.

TLAČIT: Doufám, že článek bude užitečný nejen pro začátečníky, ale pomůže i zkušenějším správcům zefektivnit jejich znalosti.

Tak pojďme.

Oprávnění v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Pro přístup k souborům v Linuxu se používají oprávnění. Tato oprávnění jsou přiřazena třem objektům: vlastník souboru, vlastník skupiny a další objekt (tedy všichni ostatní). V tomto článku se dozvíte, jak použít oprávnění.

Tento článek začíná přehledem základních pojmů, po kterém následuje diskuse o zvláštních oprávněních a seznamech řízení přístupu (ACL). Na konci tohoto článku se zabýváme nastavením výchozích oprávnění pomocí umask a také správou rozšířených uživatelských atributů.

Správa vlastnictví souborů

Než začnete diskutovat o oprávněních, měli byste si být vědomi role vlastníka souboru a adresáře. Vlastnictví souborů a adresářů je zásadní pro práci s oprávněními. V této sekci 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ý soubor vytvoří, se stane vlastníkem tohoto souboru a primární skupina, do které stejný uživatel patří, se také stane vlastníkem tohoto souboru. Chcete-li zjistit, zda jako uživatel máte oprávnění k přístupu k souboru nebo adresáři, shell zkontroluje vlastnictví.

To se děje v následujícím pořadí:

  1. Shell zkontroluje, zda jste vlastníkem souboru, ke kterému chcete získat přístup. Pokud jste vlastníkem, získá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 souboru. Pokud jste členem této skupiny, budete k souboru přistupovat s oprávněními, která skupina nastavila, a shell přestane kontrolovat.
  3. Pokud nejste ani uživatelem, ani vlastníkem skupiny, máte práva ostatních uživatelů (Ostatní).

Chcete-li zobrazit aktuální 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 vidíte 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 daném adresáři. Někdy může být užitečné získat seznam všech souborů v systému, které mají daného uživatele nebo skupinu jako vlastníka. K tomu můžete použít nalézt. Argument najít uživatele lze k tomuto účelu použít. Například následující příkaz uvádí seznam všech souborů, které vlastní uživatel linda:

find / -user linda

Můžete také použít nalézt vyhledávat soubory, které mají určitou skupinu jako vlastníka.

Například následující příkaz vyhledá všechny soubory patřící do skupiny uživatelé:

find / -group users

Změna vlastníka

Chcete-li použít příslušná oprávnění, první věcí, kterou je třeba zvážit, je vlastnictví. Existuje na to příkaz chown. Syntaxe tohoto příkazu je snadno pochopitelná:

chown кто что

Například následující příkaz změ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 hádat, co to dělá, protože tato možnost je dostupná i pro mnoho dalších příkazů. To vám umožní rekurzivně nastavit vlastníka, což vám umožní nastavit vlastníka aktuálního adresáře a všeho níže. Následující příkaz změní vlastnictví adresáře /home a všeho pod ním na uživatele linda:

Nyní majitelé 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

Udělejme:

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

Nyní se uživatel lisa stal vlastníkem adresáře účtů:

[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ěňte 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 chgrpto dělá práci. Pokud chcete použít příkaz chown, použití . nebo : před názvem skupiny.

Následující příkaz změní libovolného vlastníka skupiny /home/account na skupinu účtů:

chown .account /home/account

Můžeš použít chown změnit vlastníka uživatele a/nebo skupiny několika způsoby. Zde jsou nějaké příklady:

  • chown lisa myfile1 nastaví uživatele lisa jako vlastníka myfile1.
  • chown lisa.sales myfile nastaví uživatele lisa jako vlastníka souboru myfile a také nastaví prodejní skupinu jako vlastníka stejného souboru.
  • chown lisa:sales myfile stejné jako předchozí příkaz.
  • chown .prodej můjsoubor nastaví prodejní skupinu jako vlastníka myfile bez změny vlastníka uživatele.
  • chown:sales myfile stejné jako předchozí příkaz.

Můžete použít příkaz chgrpzměnit vlastníka skupiny. Zvažte následující příklad, kde můžete použít chgrp nastavte vlastníka adresáře účtů na prodejní skupinu:

chgrp .sales /home/account

Stejně jako u chown, můžete použít možnost -R с chgrp, stejně jako rekurzivně změnit vlastníka skupiny.

Pochopení výchozího vlastníka

Možná jste si všimli, že když uživatel vytvoří soubor, použije se výchozí vlastnictví.
Uživatel, který soubor vytvoří, se automaticky stane vlastníkem tohoto souboru a primární skupina tohoto uživatele se automaticky stane vlastníkem tohoto souboru. Obvykle se jedná o skupinu, která je uvedena v souboru /etc/passwd jako primární skupina uživatele. Pokud je však uživatel členem více než jedné skupiny, může změnit efektivní primární skupinu.

K zobrazení aktuální efektivní primární skupiny může uživatel použít příkaz skupiny:

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

Pokud chce aktuální uživatel linda změnit efektivní primární skupinu, použije příkaz newgrpnásledovaný názvem skupiny, kterou chce nastavit jako novou efektivní primární skupinu. Po použití příkazu newgrp primární skupina bude aktivní, dokud uživatel nezadá příkaz výstup nebo se neodhlásit.

Následující text ukazuje, jak uživatel linda používá tento příkaz, s prodejem jako primární skupinou:

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

Po změně efektivní primární skupiny budou všechny nové soubory vytvořené uživatelem mít tuto skupinu jako vlastníka skupiny. Chcete-li se vrátit k původnímu nastavení primární skupiny, použijte výstup.

Aby bylo možné použít příkaz newgrp, uživatel musí být členem skupiny, kterou chce používat jako primární skupinu. Kromě toho lze pro skupinu pomocí příkazu použít skupinové heslo gpasswd. Pokud uživatel použije příkaz newgrpale není členem cílové skupiny, shell vyzve k zadání hesla skupiny. Po zadání správného hesla skupiny bude vytvořena nová účinná primární skupina.

Správa základních práv

Linuxový systém oprávnění byl vynalezen v 1970. letech XNUMX. století. Vzhledem k tomu, že výpočetní potřeby byly v těchto letech omezené, systém základních oprávnění byl značně omezený. Tento systém oprávnění používá tři oprávnění, která lze použít pro soubory a adresáře. V této části se dozvíte, jak tato oprávnění používat a měnit.

Vysvětlení oprávnění ke čtení, zápisu a spouštění

Tři základní oprávnění vám umožňují číst, zapisovat a spouštět soubory. Účinek těchto oprávnění se při použití na soubory nebo adresáře liší. U souboru vám oprávnění ke čtení dává právo otevřít soubor pro čtení. Můžete si tedy přečíst jeho obsah, ale to znamená, že váš počítač může soubor otevřít a něco s ním udělat.

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

Při aplikaci na adresář vám čtení umožňuje zobrazit obsah tohoto adresáře. Měli byste si být vědomi toho, že toto oprávnění vám neumožňuje číst soubory v adresáři. Systém oprávnění Linux nezná dědičnost a jediný způsob, jak číst soubor, je použít oprávnění ke čtení tohoto souboru.

Jak pravděpodobně tušíte, oprávnění k zápisu, je-li aplikováno na soubor, umožňuje zápis do souboru. Jinými slovy, umožňuje měnit obsah existujících souborů. Neumožňuje však vytvářet nebo odstraňovat nové soubory nebo měnit oprávnění k souborům. Chcete-li to provést, musíte udělit oprávnění k zápisu do adresáře, ve kterém chcete soubor vytvořit. V adresářích vám toto oprávnění také umožňuje vytvářet a mazat nové podadresáře.

Oprávnění k provedení je to, co potřebujete ke spuštění souboru. Ve výchozím nastavení nebude nikdy nainstalován, což činí Linux téměř zcela imunní vůči virům. Oprávnění ke spuštění může použít pouze osoba s oprávněním k zápisu do adresáře.

Následující text shrnuje použití základních oprávnění:

Oprávnění v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Pomocí chmod

Příkaz se používá ke správě oprávnění. chmod. Použitím chmod můžete nastavit oprávnění pro uživatele (uživatele), skupiny (skupinu) a další (ostatní). Tento příkaz můžete použít ve dvou režimech: relativní režim a absolutní režim. V absolutním režimu se pro nastavení základních oprávnění používají tři číslice.

Oprávnění v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Při nastavování oprávnění vypočítejte hodnotu, kterou potřebujete. Pokud chcete nastavit čtení/zápis/spouštění pro uživatele, čtení/spouštění pro skupinu a čtení/spouštění pro ostatní v /somefile, použijte následující příkaz chmod:

chmod 755 /somefile

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

Pokud chcete změnit oprávnění vzhledem k aktuálním oprávněním, můžete použít chmod v relativním režimu. Použitím chmod v relativním režimu pracujete se třemi indikátory, které ukazují, co chcete udělat:

  1. Nejprve určíte, pro koho chcete změnit oprávnění. Chcete-li to provést, můžete si vybrat mezi uživatelem (u), skupina (g) a další (o).
  2. Poté pomocí příkazu přidáte nebo odeberete oprávnění z aktuálního režimu nebo je nastavíte absolutně.
  3. Na konci použijete r, w и xurčete, jaká oprávnění chcete nastavit.

Při změně oprávnění v relativním režimu můžete přeskočit část „do“ a přidat nebo odebrat oprávnění pro všechny objekty. Tento příkaz například přidá oprávnění ke spuštění pro všechny uživatele:

chmod +x somefile

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

chmod g+w,o-r somefile

Při použití chmod -R o+rx /data nastavíte oprávnění ke spuštění pro všechny adresáře i soubory v adresáři /data. Chcete-li nastavit oprávnění ke spuštění pouze pro adresáře a nikoli pro soubory, použijte chmod -R o+ rX /data.

Velké X zajišťuje, že soubory nezískají oprávnění ke spuštění, pokud soubor již nenastavil oprávnění ke spuštění pro některé objekty. Díky tomu je X chytřejší způsob, jak se vypořádat s oprávněními ke spuštění; tím se vyhnete nastavení tohoto oprávnění u souborů, kde není vyžadováno.

Rozšířená práva

Kromě základních oprávnění, o kterých jste právě četli, má Linux také sadu pokročilých oprávnění. Toto nejsou oprávnění, která jste nastavili ve výchozím nastavení, ale někdy poskytují užitečný doplněk. V této části se dozvíte, co to je a jak je nastavit.

Vysvětlení oprávnění SUID, GUID a Sticky Bit Extended Permissions

Existují tři pokročilá oprávnění. Prvním 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ý spustí spustitelný soubor, spustí tento soubor se svými vlastními oprávněními.

Pro běžné uživatele to obvykle znamená, že použití programu je omezené. V některých případech však uživatel potřebuje zvláštní oprávnění pouze k provedení konkrétního úkolu.

Vezměme si 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. Do tohoto souboru však nemohou zapisovat uživatelé bez oprávnění root:

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. Obslužný program /usr/bin/passwd používá toto oprávnění ve výchozím nastavení. To znamená, že při změně hesla se uživatel dočasně stane rootem, což mu umožní zapisovat do souboru /etc/shadow. Můžete vidět oprávnění SUID s ls -l как s v pozici, kde byste normálně očekávali, že uvidíte x pro vlastní 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 také je), ale zároveň je potenciálně nebezpečné. Pokud není aplikováno správně, můžete náhodně udělit oprávnění root. Proto jej doporučuji používat jen s maximální opatrností.

Většina správců jej nikdy nebude muset použít; uvidíte ji pouze v některých souborech, kde by ji měl operační systém standardně nastavit.

Druhým speciálním oprávněním je identifikátor skupiny (SGID). Toto povolení má dva účinky. Při použití na spustitelný soubor dává uživateli, který soubor spouští, oprávnění vlastníka skupiny souboru. SGID tedy umí víceméně totéž co SUID. K tomuto účelu se však SGID prakticky nepoužívá.

Stejně jako u oprávnění SUID je SGID aplikováno na některé systémové soubory jako výchozí nastavení.

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

To není vždy příliš užitečné, zejména proto, že uživatelé Red Hat/CentOS mají primární skupinu nastavenou na skupinu se stejným jménem jako uživatel a jejímž jediným členem je uživatel. Ve výchozím nastavení tedy budou soubory, které uživatel vytvoří, hromadně sdíleny.

Představte si situaci, kdy uživatelé linda a lori pracují v účetnictví a jsou členy skupiny účet. Ve výchozím nastavení jsou tito uživatelé členy soukromé skupiny, jejímž jediným členem jsou. Oba uživatelé jsou však členy skupiny účtů, ale také jako sekundární parametr skupiny.

Výchozí situace je, že když kterýkoli z těchto uživatelů vytvoří soubor, primární skupina se stane vlastníkem. Proto ve výchozím nastavení nemá linda přístup k souborům vytvořeným lori a naopak. Pokud však vytvoříte sdílený adresář skupiny (řekněme /groups/account) a ujistíte se, že je na tento adresář použito oprávnění SGID a že účet skupiny je nastaven jako vlastník skupiny pro tento adresář, všechny soubory vytvořené v tomto adresáři a všechny z jeho podadresářů, také ve výchozím nastavení získat účet skupiny jako vlastníka skupiny.

Z tohoto důvodu je oprávnění SGID velmi užitečným oprávněním k nastavení na adresáře veřejných skupin.

Oprávnění SGID zobrazené ve výstupu ls -l как s na pozici, kde byste normálně našli oprávnění ke spuštění skupiny:

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

Třetí ze speciální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 má více uživatelů přístup k zápisu do stejného adresáře. Pokud je použit lepivý bit, může uživatel odstranit soubor pouze v případě, že je vlastníkem souboru nebo adresáře, který soubor obsahuje. Z tohoto důvodu se používá jako výchozí oprávnění pro adresář /tmp a může být užitečné i pro adresáře veřejných skupin.

Bez lepivého bitu, pokud uživatel může 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ří mají oba oprávnění k zápisu do adresáře /data/account a získají tato oprávnění tím, že jsou členy skupiny účtů. Proto může linda mazat soubory vytvořené lori a naopak.

Když použijete lepivý bit, uživatel může odstranit soubory pouze v případě, že platí jedna z následujících podmínek:

  • Uživatel je vlastníkem souboru;
  • Uživatel je vlastníkem adresáře, kde je soubor umístěn.

Při použití ls -l, můžete vidět lepkavý bit jako t v pozici, kde byste normálně viděli povolení k provedení pro ostatní:

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

Uplatnění rozšířených práv

Chcete-li použít SUID, SGID a lepivý 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 použít tato oprávnění, musíte přidat čtyřmístný argument do chmod, jehož první číslice odkazuje na zvláštní oprávnění. Následující řádek například přidá oprávnění SGID do adresáře a nastaví rwx pro uživatele a rx pro skupinu a další:

chmod 2755 /somedir

To je poněkud nepraktické, pokud potřebujete vidět aktuální oprávnění, která jsou nastavena před zahájením práce chmod v absolutním režimu. (Pokud to neuděláte, vystavujete se riziku přepsání oprávnění.) Doporučuji tedy spustit v relativním režimu, pokud potřebujete použít některé ze speciálních oprávnění:

  1. Pro použití SUID chmod u+s.
  2. Pro použití SGID chmod g+s.
  3. Pro použití s ​​lepivým bitem chmod +ta za ním název souboru nebo adresáře, pro který chcete nastavit oprávnění.

Tabulka shrnuje vše, co potřebujete vědět o správě speciálních oprávnění.

Oprávnění 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žijete speciální oprávnění, která členům skupiny usnadní sdílení souborů ve sdíleném adresáři skupiny. Přiřadíte ID bit k nastavenému ID skupiny, stejně jako sticky bit, a uvidíte, že jakmile jsou nastaveny, jsou přidány funkce, které členům skupiny usnadňují spolupráci.

  1. Otevřete terminál, kde jste uživatel linda. Pomocí příkazu můžete vytvořit uživatele Linda, přidejte heslo passwd Linda.
  2. Pomocí příkazu vytvořte adresář /data v kořenovém adresáři a podadresář /data/sales mkdir -p /data/prodej. Kompletní cd /data/salespřejít do prodejního adresáře. Kompletní dotkněte se linda1 и dotkněte se linda2vytvořit dva prázdné soubory, které vlastní linda.
  3. Běh su-lisa pro přepnutí aktuálního uživatele na uživatele lisa, který je také členem prodejní skupiny.
  4. Běh cd /data/sales a z tohoto adresáře spustit ls -l. Uvidíte dva soubory, které byly vytvořeny uživatelem linda a patří do skupiny linda. Kompletní rm -f linda*. Tím se odstraní oba soubory.
  5. Běh dotknout se lisa1 и dotknout se lisa2vytvořit dva soubory, které vlastní uživatel lisa.
  6. Běh su- povýšit svá oprávnění na root.
  7. Běh chmod g+s,o+t /data/prodejpro nastavení bitu identifikátoru skupiny (GUID) a také příchytného bitu ve sdíleném skupinovém adresáři.
  8. Běh su-linda. Pak udělejte dotkněte se linda3 и dotkněte se linda4. Nyní byste měli vidět, že dva soubory, které jste vytvořili, jsou vlastněny prodejní skupinou, která je vlastníkem skupiny adresáře /data/sales.
  9. Běh rm -rf lisa*. Sticky bit zabraňuje smazá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 smazat!

Správa ACL (setfacl, getfacl) v Linuxu

Přestože rozšířená oprávnění popsaná výše přidávají užitečnou funkcionalitu způsobu, jakým Linux zpracovává oprávnění, neumožňují vám udělit oprávnění více než jednomu uživateli nebo skupině ve stejném souboru.

Tuto funkci nabízejí seznamy řízení přístupu. Navíc umožňují správcům komplexním způsobem nastavovat výchozí oprávnění, kdy se nastavená oprávnění mohou lišit adresář od adresáře.

Porozumění seznamům ACL

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

Obslužný program tar nepodporuje ACL. Abyste se ujistili, že se při vytváření zálohy neztratí nastavení ACL, použijte hvězda místo dehtu. hvězda pracuje se stejnými možnostmi jako tar; jen přidává podporu pro nastavení ACL.

ACL můžete také zálohovat pomocí getfacl, který lze obnovit pomocí příkazu setfacl. Chcete-li vytvořit zálohu, použijte getfacl -R /adresář > soubor.acls. Chcete-li obnovit nastavení ze záložního souboru, použijte setfacl --restore=file.acl.

Nedostatek podpory ze strany některých nástrojů by neměl být problém. ACL jsou často aplikovány na adresáře jako strukturální opatření spíše než na jednotlivé soubory.
Aplikovaných na chytrých místech v souborovém systému jich tedy nebude mnoho, ale jen pár. Obnovení původních seznamů ACL, se kterými jste pracovali, je tedy relativně snadné, i když je váš zálohovací software nepodporuje.

Příprava systému souborů pro ACL

Než začnete pracovat s ACL, možná budete muset připravit systém souborů na podporu ACL. Protože je třeba rozšířit metadata systému souborů, není v systému souborů vždy výchozí podpora pro ACL. Pokud se při nastavování seznamů ACL pro systém souborů zobrazí zpráva „operace není podporována“, váš systém souborů nemusí seznamy ACL podporovat.

Chcete-li to opravit, musíte přidat možnost acl mount v /etc/fstab, takže souborový systém je standardně připojen s podporou ACL.

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

K nastavení ACL potřebujete příkaz setfacl. Chcete-li zobrazit aktuální nastavení ACL, potřebujete getfacl. tým ls -l nezobrazuje žádné existující ACL; pouze ukazuje + za seznamem oprávnění, což znamená, že ACL platí také pro soubor.

Před nastavením ACL je vždy dobré ukázat aktuální nastavení ACL pomocí getfacl. V níže uvedeném příkladu můžete vidět aktuální oprávnění, jak je znázorněno na ls -l, a také jak je znázorněno s getfacl. Pokud se podíváte dostatečně pozorně, uvidíte, že zobrazené informace jsou naprosto stejné.

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

V důsledku provedení příkazu getfacl níže můžete vidět, že jsou zobrazena oprávnění pro tři různé objekty: uživatele, skupinu a další. Nyní přidejte seznam ACL, který poskytne oprávnění ke čtení a spouštění také prodejní skupině. příkaz pro toto setfacl -mg:prodej:rx /dir. V tomto týmu -m označuje, že je třeba změnit aktuální nastavení ACL. Potom g:prodej:rx říká příkazu, aby nastavil ACL pro čtení a provádění (rx) pro skupinu (g) odbyt. Níže vidíte, jak příkaz vypadá, a také výstup příkazu getfacl po změně aktuálního nastavení ACL.

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

Nyní, když víte, jak nastavit skupinový ACL, je snadné porozumět ACL pro uživatele a ostatní uživatele. Například příkaz setfacl -mu:linda:rwx /data dává oprávnění uživateli linda v adresáři /data, aniž by z něj udělal vlastníka nebo změnil přiřazení aktuálního vlastníka.

Tým setfacl má mnoho funkcí a možností. Zvláště důležitá je jedna možnost, parametr -R. Je-li tato volba použita, nastaví ACL pro všechny soubory a podadresáře, které aktuálně existují v adresáři, kde nastavíte ACL. Při změně ACL pro existující adresáře se doporučuje vždy používat tuto volbu.

Práce s výchozími seznamy ACL

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 povolit dědičnost tím, že budete pracovat s výchozími seznamy ACL.

Nastavením výchozího ACL určíte oprávnění, která budou nastavena pro všechny nové položky vytvořené v adresáři. Uvědomte si, že výchozí ACL nemění oprávnění k existujícím souborům a podadresářům. Chcete-li je změnit, musíte také přidat normální ACL!

To je důležité vědět. Chcete-li použít ACL ke konfiguraci více uživatelů nebo skupin pro přístup ke stejnému adresáři, musíte nastavit ACL dvakrát. První použití setfacl -R -mzměnit ACL pro aktuální soubory. Poté použijte setfacl-md:postarat se o všechny nové prvky, které také vzniknou.

Chcete-li nastavit výchozí ACL, stačí přidat možnost d po opci -m (na pořadí záleží!). Tak používejte setfacl -md:g:prodej:rx /datapokud chcete, aby skupinový prodej četl a spouštěl cokoli, co se kdy vytvoří v adresáři /data.

Při použití výchozích ACL může být také užitečné nastavit ACL pro ostatní. To obvykle nedává moc smysl, protože můžete také změnit oprávnění pro ostatní uživatele chmod. S čím se však nedá dělat chmod, je specifikovat práva, která musí být udělena ostatním uživatelům pro každý nový soubor, který je kdy vytvořen. Pokud chcete ostatním zabránit v získání jakýchkoli oprávnění k čemukoli vytvořenému v /data, například použijte setfacl -md:o::- /data.

ACL a normální oprávnění nejsou vždy dobře integrovány. Problémy mohou nastat, pokud na adresář použijete výchozí ACL, pak se do tohoto adresáře přidají položky a pak se pokusíte změnit normální oprávnění. Změny, které se vztahují na normální oprávnění, se v přehledu ACL dobře neprojeví. Abyste se vyhnuli problémům, nastavte nejprve normální oprávnění, potom nastavte výchozí seznamy ACL (a snažte se je znovu neměnit).

Příklad správy zvýšených práv pomocí ACL

V tomto příkladu budete pokračovat s adresáři /data/account a /data/sales, které jste vytvořili dříve. V předchozích příkladech jste zajistili, že prodejní skupina má oprávnění k /data/sales a skupina účtů má oprávnění k /data/account.

Nejprve se ujistěte, že skupina účtů získává oprávnění ke čtení v adresáři /data/sales a prodejní skupina získává oprávnění ke čtení v adresáři /data/account.

Potom nastavíte výchozí seznamy ACL, abyste se ujistili, že všechny nové soubory mají nastavena správná oprávnění pro všechny nové položky.

  1. Otevřete terminál.
  2. Běh setfacl -mg:account:rx /data/sales и setfacl -mg:prodej:rx /data/account.
  3. Běh getfaclabyste se ujistili, že jsou oprávnění nastavena tak, jak jste chtěli.
  4. Běh setfacl -md:g:account:rwx,g:sales:rx /data/salespro nastavení výchozího ACL pro prodejní adresář.
  5. Přidejte výchozí ACL pro adresář /data/account pomocí setfacl -md:g:prodej:rwx,g:účet:rx /data/účet.
  6. Ověřte, zda jsou nastavení ACL platná, přidáním nového souboru do /data/sales. Kompletní klepněte na /data/sales/newfile a dělej getfacl /data/sales/newfile pro kontrolu aktuálních oprávnění.

Nastavení výchozích oprávnění pomocí umask

Výše jste se naučili pracovat s výchozími seznamy ACL. Pokud nepoužíváte ACL, existuje možnost shellu, která určuje výchozí oprávnění, která získáte: umaskovat (reverzní maska). V této části se dozvíte, jak změnit výchozí oprávnění pomocí umaskovat.

Možná jste si všimli, že když vytvoříte nový soubor, nastaví se některá výchozí oprávnění. Tato oprávnění jsou určena nastavením umaskovat. Toto nastavení prostředí platí pro všechny uživatele při přihlášení. V parametru umaskovat použije se číselná hodnota, která se odečte od maximálních oprávnění, která lze pro soubor automaticky nastavit; maximální nastavení pro soubory je 666 a pro adresáře je 777.

Z tohoto pravidla však platí některé výjimky. Kompletní přehled nastavení naleznete umaskovat v tabulce níže.

Z čísel použitých v umaskovat, jako v případě číselných argumentů pro příkaz chmod, první číslice označuje oprávnění uživatele, druhá číslice označuje oprávnění skupiny a poslední označuje výchozí oprávnění nastavená pro ostatní. Význam umaskovat výchozí 022 dává 644 pro všechny nové soubory a 755 pro všechny nové adresáře vytvořené na vašem serveru.

Kompletní přehled všech číselných hodnot umaskovat a jejich výsledky v tabulce níže.

Oprávnění v Linuxu (chown, chmod, SUID, GUID, sticky bit, ACL, umask)

Snadný způsob, jak zjistit, jak nastavení umask funguje, je následující: začněte s výchozími oprávněními souboru nastavenými na 666 a odečtěte umask, abyste získali účinná 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. Chcete-li nastavit umask pro všechny uživatele, musíte zajistit, aby bylo nastavení umask vzato v úvahu při spouš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 zadat umask, který chcete v tomto skriptu shellu použít. Pokud se umask v tomto souboru změní, použije se po přihlášení na server pro všechny uživatele.

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

Nastavení použitá v tomto souboru platí pouze pro jednotlivé uživatele; proto je to dobrá metoda, pokud potřebujete více podrobností. Osobně se mi líbí tato funkce změnit výchozí umask pro uživatele root na 027, zatímco normální uživatelé běží s výchozím umask 022.

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

Toto je poslední část o oprávněních pro Linux.

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

Stejně jako u seznamů ACL může být nutné, aby atributy souboru obsahovaly možnost namontovat.

Toto je možnost user_xattr. Pokud se při práci s rozšířenými uživatelskými atributy zobrazí zpráva „operace není podporována“, nezapomeňte parametr nastavit namontovat v /etc/fstab.

Mnoho atributů je zdokumentováno. Některé atributy jsou k dispozici, ale zatím nejsou implementovány. Nepoužívejte je; nic ti nepřinesou.

Níže jsou uvedeny nejužitečnější atributy, které můžete použít:

A Tento atribut zajišťuje, že se nezmění čas přístupu k souboru.
Obvykle při každém otevření souboru musí být čas přístupu k souboru zaznamenán v metadatech souboru. To negativně ovlivňuje výkon; takže u souborů, ke kterým se pravidelně přistupuje, atribut A lze použít k deaktivaci této funkce.

a Tento atribut umožňuje přidat, ale nikoli odebrat soubor.

c Používáte-li systém souborů, který podporuje kompresi na úrovni svazku, tento atribut souboru zajišťuje, že soubor je komprimován při prvním povolení kompresního mechanismu.

D Tento atribut zajišťuje, že změny v souborech jsou zapsány na disk okamžitě, nikoli jako první do mezipaměti. Toto je užitečný atribut u důležitých databázových souborů, aby se zajistilo, že se neztratí mezi mezipamětí souborů a pevným diskem.

d Tento atribut zajišťuje, že soubor nebude uložen v zálohách, kde se používá obslužný program výpisu.

I Tento atribut umožňuje indexování pro adresář, ve kterém je povolen. To poskytuje rychlejší přístup k souborům pro primitivní souborové systémy, jako je Ext3, které nepoužívají databázi B-stromu pro rychlý přístup k souborům.

i Tento atribut činí soubor neměnným. V souboru proto nelze provádět žádné změny, což je užitečné pro soubory, které vyžadují další ochranu.

j Tento atribut zajišťuje, že na souborovém systému ext3 je soubor nejprve zapsán do žurnálu a poté do datových bloků na pevném disku.

s Po smazání souboru přepište bloky, ve kterých byl soubor uložen, na 0s. Tím je zajištěno, že soubor nelze po smazání obnovit.

u Tento atribut ukládá informace o smazání. To vám umožní vyvinout nástroj, který bude pracovat s těmito informacemi a zachránit smazané soubory.

Pokud chcete použít atributy, můžete použít příkaz klábosení. Například použijte chattr +s somefilepoužít atributy na nějaký soubor. Potřebujete odstranit atribut? Poté použijte chattr -s somefilea bude odstraněn. Chcete-li získat přehled o všech aktuálně použitých atributech, použijte příkaz lsattr.

Shrnutí

V tomto článku jste se naučili pracovat s oprávněními. Dočtete se o třech základních oprávněních, pokročilých oprávněních a o tom, jak aplikovat ACL v systému souborů. Také jste se naučili, jak použít možnost umask k použití výchozích oprávnění. Na konci tohoto článku jste se naučili, jak pomocí uživatelsky rozšířených atributů použít další vrstvu zabezpečení systému souborů.

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

Opraveny některé překlepy a gramatické chyby v článku. Některé objemné odstavce byly zmenšeny na menší pro lepší čitelnost.

Místo "Pouze někdo s právy správce k adresáři může použít oprávnění ke spuštění." opraveno na "Pouze někdo s oprávněním k zápisu do adresáře může použít oprávnění ke spuštění.", což by bylo správnější.

Děkuji za komentáře berez.

Nahrazeno:
Pokud nejste vlastníkem uživatele, shell zkontroluje, zda jste členem skupiny, známé také jako skupina souboru.

Zapnuto:
Pokud nejste vlastníkem souboru, shell zkontroluje, zda jste členem skupiny, která má oprávnění k souboru. Pokud jste členem této skupiny, budete k souboru přistupovat s oprávněními, která skupina nastavila, a shell přestane kontrolovat.

Děkuji za váš komentář KryptoPirát

Zdroj: www.habr.com

Přidat komentář