GNU/Linux >> Znalost Linux >  >> Linux

Opravdu potřebuji rekurzivní chmod k omezení přístupu ke složce?

V případě adresáře vám přístup „čtení“ umožňuje vypsat obsah a přístup „spustit“ umožňuje procházet adresářem a otevřít jeden z jeho potomků (soubor nebo podadresář). Pokud tedy odstraníte:

  • jen přístup pro čtení, lidé mohou stále přistupovat k podadresářům uhodnutím jejich jmen
  • pouze příznak spuštění, lidé mohou stále vypisovat názvy obsahu, i když k nim nemají přístup, a to může být stále prozrazující
  • jak pro čtení, tak pro spouštění oprávnění v adresáři, cokoliv pod ním se stane nedostupným a vy nemusíte provádět rekurzivní změny.

Samozřejmě pokud provedete rekurzivní změnu, náhodné nerekurzivní resetování přístupových práv k nejvyššímu adresáři bude mít menší následky.


Je samozřejmé, že pokud jste vytvořili soubor před dvěma dny (ve veřejně čitelném režimu) a někdo si tento soubor přečetl včera nebo vytvořil jeho kopii, pak dnes nemůžete udělat nic, aby byl tento soubor soukromý.

xenoid říká (poněkud zjednodušeně), že pokud ze svého adresáře odeberete oprávnění skupiny a další oprávnění (dnes, teď), „cokoli pod tím se stane nedostupným a nemusíte provádět rekurzivní změny.“ Souhlasím, pokud chmod váš (nejvyšší) adresář přiměřeně, nikdo kromě vás se do něj v budoucnu (tj. od nynějška) nedostane. Ale jsou tu nějaké problémy.

Pevné odkazy

Pamatujete si ten soubor, který jste vytvořili před dvěma dny? Předpokládejme, že váš protivník včera vytvořil pevný odkaz na tento soubor (místo toho, aby jej zkopíroval). Pokud chmod pouze váš (nejvyšší) adresář, pak tento soubor bude mít i nadále veřejně čitelná oprávnění, která jste mu přidělili, když jste jej vytvořili, a tak jej bude moci padouch číst i v budoucnu – (potenciálně), i když následně upravíte to. Pokud provedete rekurzivní chmod ,která zajistí oprávnění k souboru,což ovlivní odkaz. Zloduch bude stále moci udělat ls -l na něm, takže uvidí, kdy ho změníte, a jak je velký, ale nebudou si ho moci znovu přečíst.

Pracovní adresář

Předpokládejme, že pod vaším secret adresář, máte plans adresář a je také veřejně čitelný. A předpokládejme, že před pěti minutami ten zlý otevřel okno terminálu a řekl

cd /home/clemisch/secret/plans

Nyní, po provedení chmod na secret ,pracovní adresář toho padoucha je stále  /home/clemisch/secret/plans a mohou pokračovat ve vypisování tohoto adresáře a přístupu k souborům v něm, potenciálně navždy. Samozřejmě, jakmile budou cd jinde, nebo zavřete toto okno, nebo se odhlaste, nebo je počítač restartován, pak ztratí přístup.

Pokud provedete rekurzivní chmod , která zajistí oprávnění ke všem souborům a adresářům, což způsobí, že squatter okamžitě ztratí přístup.

To nemusí být příliš velké riziko, pokud se jedná o osobní počítač, ke kterému se přistupuje pouze přes konzolu. Ale pokud ten padouch mohl nechat screen nebo tmux session na pozadí, pak by mohli použít tento útok. A pokud stroj podporuje ssh (nebo jiný vzdálený přístup; možná by stačilo i FTP), tento útok lze použít.

Lidská chyba

Jak xenoid zdůraznil ve své odpovědi:Pokud uděláte rekurzivní chmod na secret dnes a pozítří omylemchmod (pouze) adresář nejvyšší úrovně zpět na 755, pak budete stále chráněni dnešním rekurzivním chmod —všechny soubory a adresáře pod secret bude stále nečitelný. (Samozřejmě, pokud vytvoříte nový soubor v secret zítra a povolíte, aby byl veřejně čitelný, pak bude odhalen, když otevřete oprávnění na secret adresář. Ale to by platilo bez ohledu na to, zda dnešní chmod byl rekurzivní nebo ne.)

mazunki poznamenal:„Věřím cp nese oprávnění." Nejsem si jistý, co tím mysleli, ale zvažte tento scénář. Chcete udělat diff mezi dvěma soubory:

  • secret/plans/the/quick/brown/fox/file1
  • secret/jumps/over/the/lazy/dog/file2

Nejste si ale jisti, kde přesně tyto soubory jsou, a musíte je šťourat, abyste je našli. Možná budete v pokušení to udělat

cd plans
cd the/quick                            # looking for file1
cd brown/fox                            # found it!
cp file1 /tmp
cd ../../../../..
cd jumps/over
cd the                                  # looking for file2
cd lazy/dog                             # found it!
diff /tmp/file1 file2

Pokud to uděláte, pak /tmp/file1 bude mít stejnou ochranu jako secret/plans/the/quick/brown/fox/file1 —takže to je další důvod, proč udělat rekurzivní chmod dnes.

Ještě jedna věc

Pokud padouch otevřel jeden z vašich tajných souborů před pěti minutami a nechá si ho otevřený, bude si ho moci v budoucnu přečíst – potenciálně i když jej upravíte. Dobrou zprávou je, že se jedná o poněkud složitý útok na provedení — padouch si to musí trochu promyslet, než provedete chmod . Špatnou zprávou je, že tomuto útoku je velmi obtížné se bránit – rekurzivní chmod nepomůže.
__________
a samozřejmě privilegovaní uživatelé / procesy

P.S. Svůj příkaz můžete trochu zkrátit:chmod go= je ekvivalentní chmod g=,o= . (To neudělá rekurzivní chmod rychleji, samozřejmě.)


Linux
  1. git klon bez složky projektu

  2. Proč musí být složka spustitelná?

  3. Jak mohu provést rekurzivní chmod pouze v adresářích?

  1. sudo -i, ale ponechat aktuální pracovní adresář

  2. přejmenování velké složky:je to riskantní?

  3. Je třeba opravit oprávnění k souborům v domovském adresáři uživatele

  1. Chyba Přístup odepřen, potřebujete oprávnění PROCESS [MySQL]

  2. Omezit velikost adresáře

  3. PSCP:Nahrajte celou složku, Windows do Linuxu