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 profoo
chmod +x foo
- nastavte executable příznak profoo
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ářefoo
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 {} \;