GNU/Linux >> Znalost Linux >  >> Linux

Jsou při přístupu k podadresáři důležitá oprávnění nadřazeného adresáře?

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

Související:Získat „Povolení odepřeno“ při přesměrování výstupu sudo echo „xyz“ do souboru?

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í.


Linux
  1. Jak auditovat oprávnění pomocí příkazu find

  2. [CentOS 7 Apache]:Oprávnění odepřeno:oprávnění k souboru zakazují přístup k serveru

  3. Přístupová oprávnění /dev/mem

  1. Nový rodičovský proces, když rodičovský proces zemře?

  2. Jak zabít podřízený proces pythonu vytvořený pomocí subprocess.check_output(), když rodič zemře?

  3. Je přístup k haldě serializován?

  1. Neočekávané oprávnění exec od mmap při zahrnutí souborů sestavy do projektu

  2. Co dělá povolení k provedení?

  3. oprávnění k souboru v zip/7z/rar?