Измените права всех файлов и папок каталога на 644/755

Как мне изменить все файлы на 644 и все папки на 755 с помощью chmod из командной строки linux? (Терминал)

Ответ 1

Одним из подходов может быть использование find:

для каталогов

find /desired_location -type d -print0 | xargs -0 chmod 0755

для файлов

find /desired_location -type f -print0 | xargs -0 chmod 0644

Ответ 2

Самый простой способ это сделать:

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

Ответ 3

Самый короткий, который я мог бы придумать, это:

chmod -R a=r,u+w,a+X /foo

который работает на GNU/Linux, и я верю в Posix вообще (из моего чтения: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html).

Что это такое:

  • Установить файл/каталог в r__r__r__ (0444)
  • Добавьте w для владельца, чтобы получить rw_r__r__ (0644)
  • Установите для всех всех, если каталог (0755 для каталога, 0644 для файла).

Важно, что разрешение шага 1 очищает все исполняемые биты, поэтому шаг 3 только добавляет обратно исполняемые биты для каталогов (никогда не файлы). Кроме того, все три этапа выполняются до того, как каталог будет рекурсирован (так что это не эквивалентно, например,

chmod -R a=r /foo
chmod -R u+w /foo
chmod -R a+X /foo

так как a = r удаляет x из каталогов, поэтому chmod не может их перезаписывать.)

Ответ 4

Это сработало для меня:

find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;

Ответ 5

Проще всего запомнить две операции:

chmod -R 644 dirName
chmod -R +X dirName

Символ + X влияет только на каталоги.

Ответ 6

Сделайте оба за один проход с помощью:

find -type f ... -o -type d ...

Как и в, найдите тип f ИЛИ тип d и сделайте первый... для файлов, а второй... для dirs. В частности:

find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +

Оставьте кнопку --changes, если вы хотите, чтобы она работала тихо.

Ответ 7

На 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 {} \;

Я проверил и... это работает!

Ответ 8

Это тоже может работать:

chmod -R 755 *  // All files and folders to 755.

chmod -R 644 *.*  // All files will be 644.