GNU/Linux >> Znalost Linux >  >> Linux

Linux:Nastavte oprávnění pouze pro adresáře

chmod může to vlastně udělat sám; X symbolické oprávnění znamená "spustit, pokud to dává smysl", což obecně znamená v adresářích, ale ne v souborech. Můžete tedy použít:

chmod -R u=rwX,go=rX /path/to/htdocs

Jediným potenciálním problémem je, že pokud některý z obyčejných souborů již má spouštěcí sadu, chmod předpokládá, že je to záměrné a ponechá si to. Pokud se jedná o potenciální problém a máte GNU verzi chmod (tj. používáte Linux), můžete jej získat, abyste odstranili všechna zbloudilá oprávnění ke spuštění, jako je toto:

chmod -R a-x,u=rwX,go=rX /path/to/htdocs

Bohužel tento trik nefunguje s bsd (/macOS) verzí chmod (U jiných verzí si nejsem jistý). Je to proto, že verze bsd používá X oprávnění založené na "původním (neupraveném) režimu", tj. zda měl nějaké spouštěcí bity před a-x byla provedena úprava (viz man stránka).


Použijte find pro vyhledání adresářů a aplikaci chmod na ně:

find -type d | xargs chmod 775

Použijte typ f pro soubor:

find -type f | xargs chmod 775

Použijte find's -type možnost omezit akce na soubory a adresáře. Použijte -o možnost zadat alternativní akce pro různé typy, takže stačí spustit find jednou, nikoli samostatně pro každý typ.

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

Linux
  1. Jak vyhledávat a odstraňovat adresáře rekurzivně v systému Linux

  2. Najděte soubory a adresáře v Linuxu jako profík

  3. Najděte největší soubory a adresáře v Linuxu

  1. Jak smyčkovat adresáře v Linuxu?

  2. Odstraňte pouze soubory v adresáři v adresářích linux NOT

  3. Linux najít/vyhledat POUZE kořenový oddíl?

  1. Úvod do linuxového příkazu chmod

  2. Linux – Suid nemá žádný vliv na adresáře s Linuxem?

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