При работе с данными сервера, через консоль терминала, очень часто возникает потребность изменить права на файлы и папки. Вот только стандартный функционал команды chmod не даёт нам возможности отделить файлы от папок.
Как же быть, если файлов и папок много, права на файлы нужны 0644, а на папки 0755, например? Есть решение, достаточно несложное:
find ./ -type f -exec chmod 0644 {} \;
find ./ -type d -exec chmod 0755 {} \;
В примере мы воспользовались силой команды find, и её черезвычайно полезной опцией exec. В первой строке ищутся файлы и, с помощью опции exec, заменяются права доступа к ним; во второй строке, права устанавливаются для директорий.
Рекурсивно, быстро, разборчиво!)))
Всегда пользовался способом тобой описанным, но недавно узнал вот о таком:
chmod -R a=rX,u+w ./*
src: http://xtips.ru/?act=tview&tid=180
Интересный способ))
Способ полезный, но пример некорректный.
Опция -Х устанавливает х аттрибут, если файл является дирректорией или если он уже содержит хотя бы один х аттрибут. То есть «сбросить» все права таким способом нельзя.
Например, если файл был 0744, после выполнения приведённой команды он станет 0755.
Сбросить права можно следующим образом:
$ chmod -R 0644 ./* && chmod -R +X ./*
Естественно после этого все файлы, которые были исполняемыми, перестанут быть исполняемыми.