diff --git a/atributy_souboru.md b/atributy_souboru.md new file mode 100644 index 0000000000000000000000000000000000000000..02d53158dd8d1e6c7843893c9fc5ee78e22f336b --- /dev/null +++ b/atributy_souboru.md @@ -0,0 +1,69 @@ +# Atributy souborů + +## Inode + +* Změna skupin uživatele se projeví až při novém přihlášení + +> Skupiny přístupné pod heslem +> /etc/gshadow + +### Filesystem specific + +* např. ext4 + * immutable + * append-only +* existuje nějaký bitík na zálohování + +## ACL + +Jak vypadá pravidlo + +* Někumu přiřazuji nějakou množinu + +* Pro vlastníka souborů platí množina +* Pro skupinu +* Pro konkrétního uživatele +* Pro konkrétní skupinu +* Pro ostatní +* Maska +* Defaulty + +Umožňuje nemonotónní konstrukce (mohu zakázat uživatele) + +### Maska + +Slouží k tomu, aby programy, které nevědí o ACL nedělaly nebezpečné věci. + +Dává horní odhad na práva, která by někdo mohl mít. (Vyjímka user a other z inodových) + +### Default + +Množina ACL pro adresář, která se přiřazuje dětem. + +> Umask +> +> Vlastnost procesu. Při zakládání inode shodí konkrétní práva. +> +> Motivace pro skupinu pro každého uživatele je ten, aby umaska nemusela brát práva pro skupinu. + +## Extended attributy + +Dá se tam uložit všechno možné (jsou tam např. ACL). Je to key:value. Má to podstromy -- system, user, trusted, security + +## Příkazy + +* setfacl +* getfacl +* getfattr +* setfattr +* chattr -- je to flagy typu immutable, atd. +* stat + +## Man + +* acl +* capabilities +* inode +* xattr + +See also manuálových stránek mi možná ukáže vhodné příkazy. diff --git a/security_model.md b/security_model.md new file mode 100644 index 0000000000000000000000000000000000000000..9afdf741d0eceb8659d54a190d9ba38489ceb380 --- /dev/null +++ b/security_model.md @@ -0,0 +1,58 @@ +# Security model + +Zatím ignorujeme security modules. Dodatečně lze definovat bezpečnostní pravidla (může pouze víc omezit). + +Existují uživatelé a skupiny. Inody mají vlastníka a vlastnící skupinu. Procesy mají vlastníka, primární skupinu a n sekundárních skupin. + +Dva typy kontroly práv: +* Věci, které pouze vlastník (změnit práva inodu, signály) +1) Pokud jsem vlastník, vstahují se na mě práva vlastníka +2) Jinak pokud jsem v nějaké vlastnící skupině, vstahují se na mě práva skupiny +3) Jinak ostatní + +Zajímavé věci nastávají, když práva nejsou monotónní. Nedoporučuje se to. Trochu to funguje, ale jsou v tom díry. + +Vlastnosti procesu jsou dědičné. + +## setuid bit + +Je bit, který přepíná, jestli se binárka spustí s právy vlastníka nebo volajícího. + +Nefunguje, když je to voláno přes shebang. Volající by mohl ve správnou chvíli přepsat soubor a tím exekutnout libovolný kód. + +## Různé druhy UID + +Login prostě sobě změní UID a GID. Su funguje stejně akorát s setuid. + +Jak ale po změně nevyužije otevřené file deskriptory do /etc/passwd? + +> Víc do detailu: +> +> Mám reálné a efektivní UID. Pokud měl nastavené setuid +> * reálné - volající +> * efektivní - vlastník +> +> Pomocí syscallu je mohu mezi sebou měnit. +> +> Saved UID - Posixové rozšíření +> +> * aby se snáze žonglovalo s UID +> * nikdy se nepoužívá ale mám možnost mezi ním přepínat +> +> Filesystem UID (spíš obskurita) +> +> * zjemněné efektive UID, které se používá pouze pro filesystem operace +> +> Tohle je všechno popsané v `man 7 credentials`. + +Kvůli bezpečnosti se občas věci, které mají setuid chovají jinak. + +> Dumpable flag +> +> Ovlivňuje + +## Capabilities + +Rozdrobení práv roota + +man 7 capabilities