Как изменить все файлы на 644 и все папки на 755, используя chmod
из linux
командной строки? (Терминал)
http://superuser.com
:: P, но этот вопрос помог мне здесь, спасибо.
chmod -R u+rwX,go+rX,go-w /foo
Как изменить все файлы на 644 и все папки на 755, используя chmod
из linux
командной строки? (Терминал)
http://superuser.com
:: P, но этот вопрос помог мне здесь, спасибо.
chmod -R u+rwX,go+rX,go-w /foo
Ответы:
Одним из подходов может быть использование 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 {} \;
каталогов
chmod -R a=r,u+w,a+X /foo
?
unable to execute /bin/chmod: Argument list too long
Самый простой способ это сделать:
chmod -R u+rwX,go+rX,go-w /path/to/dir
что в основном означает:
в ch
Ange файл mod
эс -R
ecursively давая:
u
ser: r
ead, w
rite и X
ecute разрешения,g
Роап и o
Ther пользователей: r
Свинец и электронные 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 не может вернуться в них.)
Мне проще запомнить две операции:
chmod -R 644 dirName
chmod -R +X dirName
+ X влияет только на каталоги.
На 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 {} \;
Я проверил и ... это работает!
Это сработало для меня:
find /A -type d -exec chmod 0755 {} \;
find /A -type f -exec chmod 0644 {} \;
find /A -type X -exec chmod Y '{}' \;
Сделайте оба за один проход с:
find -type f ... -o -type d ...
Например, найдите тип f ИЛИ тип d и выполните первое ... для файлов, а второе ... для каталогов. В частности:
find -type f -exec chmod --changes 644 {} + -o -type d -exec chmod --changes 755 {} +
Оставьте, --changes
если хотите, чтобы он работал тихо.
Если вам нужен быстрый способ восстановить данные public_html на 755 для каталогов и 644 для файлов, то вы можете использовать что-то вроде этого:
cd /home/user/domains/domain.com/public_html
find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Кроме того, если вы знаете, что PHP работает как пользователь, а не как «apache», то вы можете установить PHP-файлы равными 600 для дополнительного уровня безопасности, например:
find . -type f -name '*.php' -exec chmod 600 {} \;
Вы можете найти этот ресурс здесь: https://help.directadmin.com/item.php?id=589.
Это тоже может работать:
chmod -R 755 * // All files and folders to 755.
chmod -R 644 *.* // All files will be 644.