GNU/Linux >> Znalost Linux >  >> Linux

Chmod rekurzivně

Můžete použít chmod s X písmeno režimu (velké X) pro nastavení příznaku spustitelného souboru pouze pro adresáře.

V příkladu níže je příznak spustitelného souboru vymazán a poté rekurzivně nastaven pro všechny adresáře:

~$ mkdir foo
~$ mkdir foo/bar
~$ mkdir foo/baz
~$ touch foo/x
~$ touch foo/y

~$ chmod -R go-X foo 
~$ ls -l foo
total 8
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 bar
drwxrw-r-- 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq    0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq    0 Nov 14 15:31 y

~$ chmod -R go+X foo 
~$ ls -l foo
total 8
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 bar
drwxrwxr-x 2 wq wq 4096 Nov 14 15:31 baz
-rw-rw-r-- 1 wq wq    0 Nov 14 15:31 x
-rw-rw-r-- 1 wq wq    0 Nov 14 15:31 y

Trochu vysvětlení:

  • chmod -x foo - vymažte eXecutable příznak pro foo
  • chmod +x foo - nastavte executable příznak pro foo
  • chmod go+x foo - stejné jako výše, ale nastavte příznak pouze pro Skupinu a Jiné uživatelů, nedotýkejte se Uživatele povolení (vlastníka)
  • chmod go+X foo - stejné jako výše, ale platí pouze pro adresáře, nedotýkejte se souborů
  • chmod -R go+X foo - stejně jako výše, ale proveďte to Rekurzivně pro všechny podadresáře foo

Chcete-li zobrazit adresář, potřebujete kromě přístupu ke spuštění také přístup pro čtení. Pokud máte pouze přístup k provádění, pak můžete zjistit názvy položek v adresáři, ale žádné další informace (ani typy, takže nevíte, které položky jsou podadresáře). Toto funguje pro mě:

find . -type d -exec chmod +rx {} \;

Linux
  1. Změnit Kdo je schopen Chmod?

  2. Je Rsync ~/foo Target/foo stejný jako Rsync ~/foo/ Target/foo/?

  3. Najít největší soubory rekurzivně?

  1. chmod:příkaz nenalezen

  2. Jak mohu grep rekurzivně?

  3. chmod nefunguje

  1. Oprávnění pro Linux:Úvod do chmod

  2. Jak provést Chmod bez /usr/bin/chmod?

  3. Rozbitý systém po Chmod -r 644 /?