GNU/Linux >> Znalost Linux >  >> Linux

Udělte oprávnění ke spuštění adresářům, ale ne souborům

Chcete-li udělit oprávnění ke spuštění (vyhledávání) adresářům, ale ne souborům, použijte:

chmod -R +X .

Chcete-li přiřadit všechna oprávnění jako ve vašem příkladu, použijte:

chmod -R u=rwX,g=rX,o= .

-R mění soubory a adresáře rekurzivně, zatímco +X nastaví provést/vyhledat pouze v případě, že soubor je adresář nebo již má oprávnění ke spuštění pro některého uživatele. r a w jsou samozřejmě pro čtení a psaní.

Režim X (horní x ) je zdokumentován jak na tradiční manuálové stránce, tak v informační dokumentaci.

Mělo by také fungovat na jiných systémech podobných Unixu, např. FreeBSD, NetBSD nebo OpenBSD. Citace z manuálové stránky chmod(1) The Open Group Base Specifications Issue 7, 2018 edition:

X perm symbol byl převzat ze systémů založených na BSD, protože poskytuje běžně požadovanou funkcionalitu při provádění rekurzivní (-R možnost) úpravy. Podobnou funkci nenabízí najít utility. Historické verze BSD chmod , však podporuje pouze X s op +; byl rozšířen v tomto svazku POSIX.1-2017, protože je také užitečný s op =. (Bylo také přidáno pro op - i když duplikuje x , v tomto případě proto, že je intuitivní a snadněji vysvětlitelný.)

man 1 chmod
info '(coreutils)Conditional Executability'


Pokud to chcete udělat rekurzivně, tj. , do adresářů v adresářích v adresářích, příkaz k použití je:

 find /path/to/starting/directory -type d -exec chmod +x {} \;

To vyhledá všechny a pouze podadresáře (-type d flag) adresáře /cesta/k/spouštěcímu/adresáři a poté provede požadovanou změnu oprávnění ke spuštění pro každý z nich. Mezera před \; je povinná.


Linux
  1. Facl Ignoruje oprávnění „x“, ale pouze u souborů?

  2. Najít největší soubory nebo adresáře?

  3. Linux Odstraňte soubory a adresáře

  1. Provést instalaci, ale ne do výchozích adresářů?

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

  3. Použijte příkaz find, ale vylučte soubory ve dvou adresářích

  1. Najděte soubory existující v jednom adresáři, ale ne ve druhém

  2. bash - odstraní všechny adresáře (a obsah), ale ne soubory v pwd

  3. Jak zkopíruji strom adresářů, ale ne soubory v Linuxu?