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ě.)