GNU/Linux >> Znalost Linux >  >> Linux

Úvod do Linux Access Control Lists (ACL)

Mezi výzvy správy Linuxu v moderním obchodním prostředí patří očekávání, že můžeme a měli bychom řídit, kdo má přístup k jakým informacím. Kdysi mohli být jediní lidé, kteří potřebovali přístup k linuxovým souborovým systémům, kategorizováni obecně:prostřednictvím oprávnění k linuxovému souborovému systému.

Přehled základů

Souborový systém Linux nám poskytuje tři typy oprávnění. Zde je zjednodušená recenze:

  • U ser (nebo vlastník uživatele)
  • G skupina (nebo skupina vlastníků)
  • O tam (všichni ostatní)

S těmito oprávněními můžeme udělit tři (ve skutečnosti pět, ale k tomu se dostaneme za minutu) typy přístupu:

  • R ead
  • W obřad
  • eX ecute

Tyto úrovně přístupu jsou často v mnoha případech přiměřené. Řekněme, že máte adresář, kde jsou uloženy soubory z účetního oddělení. Tato oprávnění můžete nastavit na:

drwxrwxr-x  2 accounting accounting  12 Jan  8 15:13

Uživatel účetní služby (vlastník uživatele) může číst a zapisovat do adresáře a členové accounting skupina (nebo skupina vlastníků) může číst a zapisovat. Ostatní (uživatelé mimo účetní oddělení) však mohou vidět a spustit to, co tam je, což by někteří mohli považovat za špatný nápad.

[ Také populární: Základy správce systému Linux:Správa uživatelských účtů ]

Můžeme tedy změnit oprávnění na toto:

drwxrwx---  2 accounting accounting  12 Jan  8 15:13 .

Poznámka: Můžete také použít speciální oprávnění k ovládání nastavení, jako je například to, kdo vlastně vlastní nové soubory vytvořené v tomto adresáři, a také pevný bit který řídí, zda si členové skupiny mohou navzájem mazat soubory. To je však mimo rámec této diskuse.

Zobrazení aktuálního ACL

Co když máte účetního praktikanta (Kennyho), který potřebuje umět číst určité soubory (nebo dokonce jen soubory vlastněné Fredem, jeho manažerem)? Nebo možná lidé v obchodním oddělení také potřebují přístup k accounting soubory vlastníka k vytvoření faktur pro Fredův tým za účelem fakturace zákazníkům, ale nechcete, aby prodejní tým viděl ostatní sestavy, které Fredův tým generuje. Tato situace může být ošemetná, protože s běžnými oprávněními může mít každý soubor a adresář vždy pouze jednoho uživatele a vlastníka skupiny. Tento typ situace je to, co měly vyřešit seznamy řízení přístupu k Linuxu (ACL).

ACL nám umožňují použít specifičtější sadu oprávnění na soubor nebo adresář, aniž bychom (nezbytně) měnili základní vlastnictví a oprávnění. Umožňují nám „připnout“ přístup pro ostatní uživatele nebo skupiny.

Aktuální ACL můžeme zobrazit pomocí getfacl příkaz:

[root]# getfacl /accounting
getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---

Vidíme, že právě teď v tomto adresáři nejsou žádné ACL, protože jsou uvedena pouze oprávnění pro uživatele, skupinu a další. V tomto případě se to dalo očekávat, protože jsem právě vytvořil tento adresář v laboratoři a neudělal jsem nic jiného, ​​než přiřazení vlastnictví. Začněme tedy přidáním výchozího ACL:

Nastavení ACL

Syntaxe pro nastavení ACL vypadá takto:

setfacl [option] [action/specification] file

„Akce“ by byla -m (upravit) nebo -x (odebrat) a specifikací by byl uživatel nebo skupina následovaná oprávněními, která chceme nastavit. V tomto případě bychom použili volbu -d (výchozí). Pro nastavení výchozího ACL pro tento adresář bychom tedy provedli:

[root]# setfacl -d -m accounting:rwx /accounting

Poté můžeme nyní vidět výchozí informace ACL pro tento adresář:

[root]# getfacl /accounting
[root]# getfacl: Removing leading '/' from absolute path names
# file: accounting
# owner: accounting
# group: accounting
user::rwx
group::rwx
other::---
default:user::rwx
default:user:accounting:rwx
default:group::rwx
default:mask::rwx
default:other::---

Co když Fred v tomto adresáři vytvoří soubor?

[fred]$ touch test
[fred]$ ls -la
drwxrwx---+  2 accounting accounting  18 Jan  8 17:51 .
dr-xr-xr-x. 18 root  root  262 Jan  8 15:13 ..
-rw-rw----+  1 fred  accounting  0 Jan  8 17:51 test
[fred]$ getfacl test
# file: test
# owner: fred
# group: accounting
user::rw-
user:accounting:rwx  #effective:rw-
group::rwx  #effective:rw-

Co se stane, když se Kenny pokusí vytvořit soubor? Možná to můžete uhodnout, protože kenny není v accounting skupině, nebude mít povolení. Ale chceme, aby měl Kenny při práci s námi dobré zkušenosti, takže mu musíme dát možnost vidět, jaké soubory jsou v accounting a chceme, aby mohl vytvářet nové soubory:

[root@lab1 accounting]setfacl -m kenny:rwx /accounting
[root]getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
user:kenny:rwx

Zatím je vše dobré. Co když ale nechceme, aby tento uživatel vytvářel soubory v accounting adresář? Místo toho mu chceme umožnit pouze číst soubory tam a on může vytvářet nové soubory ve své vlastní složce.

[ Související článek: Základy správce systému Linux:Správa uživatelských účtů s UID a GID ]

Můžeme nastavit Kennyho přístup k accounting složka takto:

[root@lab1 accounting]# setfacl -m kenny:r-x /accounting
[root]# getfacl ./
# file: .
# owner: accounting
# group: accounting
user::rwx
User:kenny:r-x

Nyní uděláme z Kennyho jeho vlastní složku, dáme mu vlastnictví a pak vytvoříme accounting seskupit vlastníka skupiny tak, aby ostatní lidé v accounting skupina uvidí, co tam je:

[root@lab1 accounting]# mkdir ./kenny
[root]# chown kenny:accounting ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:rwx
group::rwx

Vytvořili jste složku v rámci accounting skupina, kterou vlastní uživatel kenny . Nyní vidí složku účetnictví, ale soubory vytváří pouze ve své vlastní složce:

[root@lab1 accounting]# su kenny
[kenny]$ touch test
touch: cannot touch ‘test’: Permission denied
[kenny]$ cd ./kenny
[kenny]$ touch test
[kenny]$ ls
test

Všimněte si, že protože složku vlastní accounting skupina, kdokoli z této skupiny tam může vkládat soubory. Protože jednáme se stážistou, je tento faktor pravděpodobně v pořádku. Co když však Kennyho povýšíme na hlavního auditora a chceme jeho práci před Fredem utajit?

[root]# setfacl -m fred:- ./kenny
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---

Co kdybychom nechtěli nikoho abyste viděli, na čem Kenny pracuje?

[root]# setfacl -m g:accounting:- ./kenny

Poznámka: Když chceme nastavit skupinu ACL, musíme to specifikovat vložením g: před názvem skupiny. Pro uživatele stačí změnit g na u , ale setfacl bude předpokládat, že mluvíme o uživateli, pokud na toto místo nic nevložíte.

Stále musíme odebrat základní oprávnění pro vlastníka skupiny, aby zbytek účetního týmu nemohl šmírovat Kennyho hlášení:

[root]# chmod g-rwx ./kenny
[root]# ls -al
total 0
drwxrwx-wx+  3 accounting accounting  44 Jan  9 16:38 .
dr-xr-xr-x. 18 root       root       262 Jan  8 15:13 ..
drwx------+  2 kenny      accounting  18 Jan  9 17:07 kenny
-rw-rw----+  1 root       root         0 Jan  9 16:33 test
-rw-rw----+  1 kenny      accounting   0 Jan  9 16:27 test2
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
group::rwx  #effective:---
[root]# su jan
[jan]$ touch ./kenny/test
touch: cannot touch ‘./kenny/test’: Permission denied

Nyní můžeme spravovat, kdo další může vidět nebo zapisovat do Kennyho složky, aniž bychom změnili vlastnictví. Dejme generální ředitelce (Lise, která není členkou účetního týmu a nebude mít přístup ke zbytku složky) přístup k Kennyho věcem:

[root@lab1 accounting]# useradd lisa
[root]# setfacl -m u:lisa:rwx ./kenny
[root]# su lisa
[lisa]$ touch ./kenny/lisa
[lisa]$ ls ./kenny
lisa  test
[lisa]$ touch test
touch: cannot touch ‘test’: Permission denied
[root]# getfacl ./kenny
# file: kenny
# owner: kenny
# group: accounting
user::rwx
user:accounting:---
user:fred:---
user:lisa:rwx
group::rwx
group:accounting:---

Znovu si všimněte, že oprávnění vlastníka skupiny zůstávají široce otevřená, ale účetní skupina (která je stále vlastníkem) již nemá k této složce přístup. Takže, kdo to vlastní?

drwxrwx---+  2 kenny  accounting  30 Jan  9 17:16 kenny

Tato část je záludná. Je užitečné vědět, že můžeme odebrat vlastníkovi oprávnění, aniž bychom změnili vlastnictví, ale možná budete chtít zvážit, zda je to výsledek, který chcete.

Závěr

Takže toto jsou základy. Seznamy ACL mohou být matoucí, proto vám doporučuji poskytnout manuálové stránky pro setfacl a getfacl dobré čtení. S těmito nástroji můžete dělat mnohem více zajímavých a užitečných věcí, ale doufejme, že nyní rozumíte natolik, abyste mohli začít.

[ Chcete si vyzkoušet Red Hat Enterprise Linux? Stáhněte si ji nyní zdarma. ]


Linux
  1. Seznamy řízení přístupu a externí disky v systému Linux:Co potřebujete vědět

  2. Úvod do Nmap na Kali Linuxu

  3. UNIX/Linux:Základy seznamů řízení přístupu (ACL).

  1. Seznam členů skupiny v Linuxu

  2. RHEL 7 – Poznámky RHCSA – Vytváření a správa seznamů řízení přístupu (ACL)

  3. Jak nakonfigurovat ACL (Access Control List) v systému souborů Linux

  1. Úvod do linuxových příkazů chgrp a newgrp

  2. Úvod do bpftrace pro Linux

  3. souběžný přístup k souboru linux