Pokud mám kořenovou složku s nějakým omezujícím oprávněním, řekněme 600, a pokud mají podřízené složky/soubory oprávnění 777, bude každý moci číst/zapisovat/spouštět podřízený soubor, i když má kořenová složka 600?
Přijatá odpověď:
Přesné pravidlo zní:adresář můžete procházet tehdy a pouze tehdy, máte-li v něm oprávnění ke spuštění.
Například pro přístup k dir/subdir/file , potřebujete oprávnění ke spuštění v dir a dir/subdir , plus oprávnění k file pro požadovaný typ přístupu. Když se dostávám do rohových případů, nejsem si jistý, zda je univerzální, že pro přístup k souboru přes relativní cestu potřebujete oprávnění ke spuštění v aktuálním adresáři (v Linuxu to děláte).
Záleží na způsobu přístupu k souboru. Například pokud máte oprávnění ke spuštění na /foo/bar ale ne na /foo , ale váš aktuální adresář je /foo/bar , můžete přistupovat k souborům v /foo/bar cestou relativní, ale ne cestou absolutní. Nemůžete změnit na /foo/bar v tomto scénáři; privilegovanější proces pravděpodobně provedl cd /foo/bar než odejdou bez privilegií. Pokud má soubor více pevných odkazů, cesta, kterou k němu používáte, určuje vaše přístupová omezení.
Symbolické odkazy nic nemění. K jejich procházení používá jádro přístupová práva volajícího procesu. Pokud například sym je symbolický odkaz na adresář dir , potřebujete oprávnění ke spuštění v dir pro přístup k sym/foo . Oprávnění k samotnému symbolickému odkazu mohou nebo nemusí záležet v závislosti na OS a souborovém systému (někteří je respektují, někteří je ignorují).
Odstranění oprávnění ke spuštění z kořenového adresáře účinně omezuje uživatele na část stromu adresářů (na kterou se musí změnit privilegovanější proces). To vyžaduje, aby byly seznamy řízení přístupu k jakémukoli použití. Například pokud / a /home jsou pro joe zakázány (setfacl -m user:joe:0 / /home ) a /home/joe je joe 's home directory, pak joe nebude mít přístup ke zbytku systému (včetně spouštění skriptů prostředí pomocí /bin/sh nebo dynamicky propojené binární soubory, které potřebují přístup k /lib , takže pro praktické použití budete muset jít hlouběji, např. setfacl -m user:joe:0 /*; setfacl -d user:joe /bin /lib ).
Oprávnění ke čtení v adresáři dává právo na výčet položek. Udělit oprávnění ke spuštění bez udělení oprávnění ke čtení je příležitostně užitečné:názvy položek slouží jako hesla pro přístup k nim. Nenapadá mě žádné využití v udělování oprávnění ke čtení nebo zápisu do adresáře bez oprávnění ke spuštění.