Ответ 1
Одним из подходов может быть использование find:
для каталогов
find /desired_location -type d -print0 | xargs -0 chmod 0755
для файлов
find /desired_location -type f -print0 | xargs -0 chmod 0644
Как мне изменить все файлы на 644 и все папки на 755 с помощью chmod
из командной строки linux
? (Терминал)
Одним из подходов может быть использование find:
find /desired_location -type d -print0 | xargs -0 chmod 0755
find /desired_location -type f -print0 | xargs -0 chmod 0644
Самый простой способ это сделать:
chmod -R u+rwX,go+rX,go-w /path/to/dir
что в основном означает:
к ch
Анж файлы mod
эс -R
ecursively давая:
u
Ser: r
EAD, w
обрядовых и е X
разрешений ecute,g
Роап и o
Ther пользователей: r
EAD и е X
разрешения ecute, но не -w
разрешение обряда. Обратите внимание, что X
сделает каталог исполняемым, но не файлом, если он не доступен для поиска/выполнения.
+X
- сделать каталог или файл доступным для поиска/исполнения всеми, если он уже доступен для поиска/исполнения кем-либо.
Пожалуйста, проверьте man chmod
для более подробной информации.
См. Также: Как выполнить chmod для всех каталогов, кроме файлов (рекурсивно)? в SU
Самый короткий, который я мог бы придумать, это:
chmod -R a=r,u+w,a+X /foo
который работает на GNU/Linux, и я верю в Posix вообще (из моего чтения: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html).
Что это такое:
Важно, что разрешение шага 1 очищает все исполняемые биты, поэтому шаг 3 только добавляет обратно исполняемые биты для каталогов (никогда не файлы). Кроме того, все три этапа выполняются до того, как каталог будет рекурсирован (так что это не эквивалентно, например,
chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo
так как a = r удаляет x из каталогов, поэтому chmod не может их перезаписывать.)
Это сработало для меня:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
Проще всего запомнить две операции:
chmod -R 644 dirName
chmod -R +X dirName
Символ + X влияет только на каталоги.
Сделайте оба за один проход с помощью:
find -type f ... -o -type d ...
Как и в, найдите тип f ИЛИ тип d и сделайте первый... для файлов, а второй... для dirs. В частности:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
Оставьте кнопку --changes
, если вы хотите, чтобы она работала тихо.
На https://help.directadmin.com/item.php?id=589 пишут:
Если вам нужен быстрый способ восстановить данные public_html на 755 для каталогов и 644 для файлов, то вы можете использовать что-то вроде этого:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Я проверил и... это работает!
Это тоже может работать:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.