GNU/Linux >> Znalost Linux >  >> Linux

Proč je chmod -R 777 / destruktivní?

Ř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é?

  1. 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í!
  2. 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.)
  3. Vymazali jste bity setuid / setgid v programech, které je měly.
    Režim 777 je ve skutečnosti 0 777 . Mezi prvky v této úvodní číslici patří setuid a setgid 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é.
  4. Porušili jste /tmp a /var/tmp Další věc v té úvodní osmičkové číslici, která dostala nulu, je sticky 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ím rm -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...
  5. 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
  6. 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
  7. Všechny soubory ve vašem systému jste udělali spustitelnými
    Mnoho lidí má . v jejich PATH 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ěme make nebo ls 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
  8. 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 .


Linux
  1. Špatně nastavený Chmod / 777. Problémy?

  2. Co způsobuje, že soubory ztrácejí oprávnění?

  3. Chmod 777 do složky a veškerého obsahu

  1. Oprávnění pro Linux:Úvod do chmod

  2. Je bezpečné chmod 777 všechno?

  3. Proč jsou soubory .so spustitelné?

  1. Jak třídit soubory podle jejich oprávnění pomocí Ls?

  2. Přečtěte si, jak změnit oprávnění pro soubory a složky

  3. Změna oprávnění pro Linux