GNU/Linux >> Znalost Linux >  >> Linux

Jaké role hrají DAC (oprávnění k souborům), ACL a MAC (SELinux) v zabezpečení souborů Linux?

Když proces provádí operaci se souborem, linuxové jádro provede kontrolu v následujícím pořadí:

  1. Volitelné řízení přístupu (DAC) nebo řízení přístupu nařízené uživatelem. To zahrnuje jak klasické kontroly oprávnění ve stylu UNIX, tak seznamy řízení přístupu POSIX (ACL). Klasické UNIXové kontroly porovnávají aktuální UID a GID procesu oproti UID a GID souboru, ke kterému se přistupuje, s ohledem na nastavené režimy (čtení/zápis/eXecute). Access Control List rozšiřuje klasické UNIXové kontroly a umožňuje více možností týkajících se řízení oprávnění.

  2. Povinná kontrola přístupu (MAC) nebo kontrola přístupu založená na zásadách. Toto je implementováno pomocí Linux Security Modules (LSM), které již nejsou skutečnými moduly (dříve byly, ale bylo to zrušeno). Umožňují dodatečné kontroly založené na jiných modelech než klasické bezpečnostní kontroly ve stylu UNIX. Všechny tyto modely jsou založeny na zásadě popisující, jaké druhy operací jsou povoleny pro který proces a v jakém kontextu.

Zde je příklad pro přístup k inodům (který zahrnuje přístup k souborům), abych podpořil moji odpověď s odkazy na online Linux Cross Reference. "function_name (filename:line)" uvedené jsou pro verzi 3.14 jádra Linuxu.

Funkce inode_permission (fs/namei.c:449) nejprve zkontroluje oprávnění ke čtení na samotném souborovém systému (sb_permission v fs/namei.c:425), pak zavolá __inode_permission (fs/namei.c:394) ke kontrole oprávnění ke čtení/zápisu/spouštění a POSIX ACL na inode v do_inode_permission (fs/namei.c:368) (DAC) a poté oprávnění související s LSM (MAC) v security_inode_permission (security/security.c:550).

Byl pouze jeden výjimka z této objednávky (DAC pak MAC):byla pro kontroly mmap. Ale to bylo opraveno ve verzi 3.15 jádra Linuxu (příslušné potvrzení).


DAC ==Discretionary Access Control , http://en.wikipedia.org/wiki/Discretionary_access_control
MAC ==Mandatory Access Control , http://cs.wikipedia.org/wiki/Mandatory_access_control
ACL ==Access Control List , http://cs.wikipedia.org/wiki/Access_control_list

ACL určuje ovládací prvky, které mají být aplikovány metodou ovládání DAC nebo MAC . MAC je explicitní, centrálně řízený a neumožňuje uživatelům udělit oprávnění k objektu, pokud k tomu nemají výslovná oprávnění, zatímco DAC umožňuje uživatelům udělit ostatním uživatelům přístup k objektům, ke kterým mají přístup.

MAC ACL s bude vždy nejprve aplikováno na požadavek, a pokud je přístup odepřen, zpracování se zastaví. Pokud je přístup povolen, pak DAC ACL s jsou aplikovány, a pokud je přístup odepřen, zpracování se zastaví. Pouze pokud je přístup udělen oběma MAC a DAC ACL s může uživatel přistupovat k objektu, který požadoval.

SELinux je MAC implementace pro Linux (existují i ​​další), zatímco tradiční rwx oprávnění k souboru v kombinaci s vlastním uživatelem a skupinou tvoří kompletní DAC ACL . SELinux 'policy' je v podstatě MAC ACL .


Omlouvám se, že se dohaduji, ale myslím, že některé odpovědi zde mohly být nesprávný. Přímo z http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html:

Pravidla zásad SELinux se kontrolují po pravidlech DAC. Pravidla zásad SELinux se nepoužijí, pokud pravidla DAC nejprve odepřou přístup.


Linux
  1. Co je Umask v Linuxu

  2. Co je NFS a jak jej nainstalovat na Linux

  3. Linux – Jaké jsou různé způsoby nastavení oprávnění k souborům atd. na Gnu/linux?

  1. Linux – Rozumíte unixovým oprávněním a typům souborů?

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

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

  1. Co jsou měkké a pevné odkazy v systému souborů Linux

  2. V jakých jazycích jsou napsány Windows, Mac OS X a Linux?

  3. Jaký je příkaz pro kopírování, čtení a odstraňování souboru v linuxu