Как мне изменить все файлы на 644 и все папки на 755, используя chmod
из командной строки linux
? (Терминал)
Измените права доступа для всех файлов и папок в каталоге на 644/755
Ответы (8)
Один из подходов может заключаться в использовании find:
для справочников
find /desired_location -type d -print0 | xargs -0 chmod 0755
для файлов
find /desired_location -type f -print0 | xargs -0 chmod 0644
sudo find /your/location -type f -exec chmod 644 {} \;
для файлов и sudo find /your/location -type d -exec chmod 755 {} \;
для каталогов
- person NineCattoRules; 23.06.2015
chmod -R a=r,u+w,a+X /foo
?
- person Peter Krauss; 10.09.2018
unable to execute /bin/chmod: Argument list too long
- person vladkras; 28.12.2018
sudo chmod -R 755 "/your/location"; sudo find "/your/location" -type f -exec chmod 644 {} \;
. (Не то, чтобы это большая разница)
- person WoodrowShigeru; 19.11.2020
Самый простой способ сделать:
chmod -R u+rwX,go+rX,go-w /path/to/dir
что в основном означает:
в ch
ange файл mod
es -R
ecursively, указав:
u
ser: разрешенияr
ead,w
rite и eX
ecute,g
roup иo
другие пользователи: разрешенияr
ead и eX
ecute, но не разрешение-w
rite.
Обратите внимание, что 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).
Что это значит:
- Установите для файла / каталога значение 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 не может возвращаться в них.)
На 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 644 dirName
chmod -R +X dirName
+ X влияет только на каталоги.
Это сработало для меня:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
find /A -type X -exec chmod Y '{}' \;
- person Michael Stumpfl; 13.09.2019
Сделайте и то, и другое за один проход:
find -type f ... -o -type d ...
Например, найдите тип f ИЛИ введите d и выполните первое ... для файлов, а второе ... для каталогов. Конкретно:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
Отключите --changes
, если хотите, чтобы он работал тихо.
Это тоже может сработать:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.
http://superuser.com
: P, но этот вопрос помог мне здесь, спасибо. - person emotality   schedule 02.02.2015chmod -R u+rwX,go+rX,go-w /foo
- person kenorb   schedule 21.05.2015