Как в 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 {} \;

Правда не знаю, как вторая команда отработает под пользователем, у которого не будет прав открытие каталогов, но под рутом всё выполнилось замечательно.

Добавить комментарий