Как в Linux рекурсивно изменить права доступа для файлов и папок
Зачем устанавливать права для файлов и папок отдельно? Например для того, чтобы не выставлять на файлы атрибут возможности выполнения, который жизненно необходим для каталогов, а для файлов вашей CMS не нужен и даже вреден.
Делается это так.
find /dir_name -type d -exec chmod 755 {} \;
find /dir_name -type f -exec chmod 644 {} \;
Однако однажды пришлось столкнуться с небольшой проблемой.
Нашлась на сайте папка, в которой лежало 400 тысяч картинок, и вторая команда задумалась минут на десять, после чего я решил дальше не ждать и принудительно её остановил.
Проблема решилась следующим образом. Сначала устанавливаем на всё сразу права, которые нужны на файлы.
chmod -R 644 /dir_name
А потом переопределяем права на каталоги.
find /dir_name -type d -exec chmod 755 {} \;
Правда не знаю, как вторая команда отработает под пользователем, у которого не будет прав открытие каталогов, но под рутом всё выполнилось замечательно.