Řešení 1:
Nejprve drobná terminologie:chmod
neodstraní oprávnění. MĚNÍ se jim.
Nyní jádro problému -- Režim 777
znamená „Kdokoli může číst, zapisovat nebo spouštět tento soubor“ – máte uděleno oprávnění aby si kdokoli dělal (efektivně), co sakra chce.
Proč je to špatné?
- Právě jste všem umožnili číst/upravovat každý soubor ve vašem systému.
- Polibte zabezpečení hesel na rozloučenou (kdokoli může číst stínový soubor a prolomit vaše hesla, ale proč se obtěžovat? Stačí ZMĚNIT heslo! Je to mnohem jednodušší!).
- Sbohem zabezpečení vašich binárních souborů (někdo může napsat nový
login
program, který je pokaždé pustí dovnitř). - Polibte své soubory na rozloučenou:Jeden uživatel nesprávně nasměruje
rm -r /
a je po všem. OS bylo řečeno, aby je nechal dělat, co chtějí!
- Nasrali jste každý program, který před spuštěním kontroluje oprávnění u souborů.
sudo
,sendmail
a řada dalších už prostě nezačne. Prozkoumají oprávnění souborů klíčů, zjistí, že nejsou tím, čím by měli být, a vrátí chybovou zprávu.
Podobněssh
se strašně zlomí (klíčové soubory musí mít specifická oprávnění, jinak jsou „nezabezpečené“ a SSH je ve výchozím nastavení odmítne použít.) - Vymazali jste bity setuid / setgid v programech, které je měly.
Režim777
je ve skutečnosti0
777
. Mezi prvky v této úvodní číslici patřísetuid
asetgid
bitů.
Většina programů, které jsou setuid/setgid, má tento bit nastavený, protože musí běžet s určitými oprávněními. Teď jsou rozbité. - Porušili jste
/tmp
a/var/tmp
Další věc v té úvodní osmičkové číslici, která dostala nulu, jesticky bit
-- To, co chrání soubory v/tmp
(a/var/tmp
) před smazáním lidmi, kteří je nevlastní.
Existuje (bohužel) spousta špatně fungujících skriptů, které se "čistí" provedenímrm -r /tmp/*
a bez lepivého bitu nastaveného na/tmp
můžete rozloučit všechny soubory v tomto adresáři.
Zmizení odkládacích souborů může některé špatně napsané programy opravdu naštvat... - V
/dev
jste způsobili zmatek/proc
a podobné souborové systémy
Toto je spíše problém na starších unixových systémech, kde je/dev
je skutečný souborový systém a obsah, který obsahuje, jsou speciální soubory vytvořené pomocímknod
, protože změna oprávnění bude zachována i po restartu, ale na jakémkoli systému může změna oprávnění vašeho zařízení způsobit značné problémy, od zřejmých bezpečnostních rizik (každý může číst každý TTY) až po méně zřejmé potenciální příčiny paniky jádra.
Credit to @Tonny for pointing out this possibility
- Zásuvky a potrubí se mohou rozbít nebo mít jiné problémy Zásuvky a potrubí se mohou úplně rozbít nebo mohou být vystaveny škodlivému vstřikování v důsledku toho, že se staly světově zapisovatelnými.
Credit to @Tonny for pointing out this possibility
- Všechny soubory ve vašem systému jste udělali spustitelnými
Mnoho lidí má.
v jejichPATH
proměnná prostředí (neměli byste!) – To by mohlo způsobit nepříjemné překvapení, protože nyní může kdokoli zahodit soubor s příhodným názvem jako příkaz (řekněmemake
nebols
a pokusit se vás přimět ke spuštění jejich škodlivého kódu.
Credit to @RichHomolka for pointing out this possibility
- Na některých systémech
chmod
resetuje seznamy řízení přístupu (ACL)
To znamená, že se může stát, že budete muset znovu vytvořit všechny vaše ACL kromě toho, že budete všude opravovat oprávnění (a je to skutečný příklad destruktivního příkazu).
Credit to @JamesYoungman for pointing out this possibility
Budou části systému, které již běží, nadále fungovat? Pravděpodobně, alespoň na chvíli.
Ale až budete příště potřebovat spustit program nebo restartovat službu, nebo nedej bože REBOOTOVAT box, čeká vás svět bolení, protože #2 a #3 výše budou zvednout své ošklivé hlavy.
Řešení 2:
Jednou z hlavních věcí je, že existuje mnoho nástrojů, jako je ssh/sudo, které kontrolují oprávnění souborového systému pro klíčové konfigurační soubory. Pokud jsou oprávnění nesprávná, jsou tyto nástroje navrženy tak, aby selhaly, protože by to znamenalo vážný bezpečnostní problém. Na mém testovacím systému Debian a možná i na jiných selhává možnost přihlášení, pravděpodobně proto, že přihlašovací binární soubor nebo něco jiného v PAM má kontroly oprávnění.
Ve skutečnosti to tedy není tak, že by byl systém zničen – jde o to, že mnoho nástrojů je navrženo tak, aby okamžitě selhalo, když jsou nesprávná oprávnění.
Pokud restartujete systém po provedení chmod 777 -R /
spustí se a můžete spouštět procesy, které nemají explicitní kontroly oprávnění. Systém tedy není ve skutečnosti mrtvý, jen poněkud nepoužitelný by-design .