Настройка прав доступа к файлам и каталогам
Все пользователи ОС Linux рано или поздно сталкиваются с необходимостью настройки прав доступа к файлам и каталогам файловой системы. Особенно это касается web-разработчиков и пользователей хостингов, так как разделение доступа к каталогам разных сайтов является распространенной практикой. Правильное выставление прав доступа для файлов и каталогов сайта необходимо и системам управления контентом (CMS), таким как WordPress, Jumla, HostCMS. В частности, является распространенной настройка прав доступа к файлам 644, а к каталогам — 755. Здесь 644 и 755 — восьмеричные наборы битов, определяющие права доступа к файлу или каталогу.
Настройка прав доступа выполняется с помощью команды chmod. Например,
chmod 755 /foo/bar
установит необходимые права на каталог bar.
Нет проблем, если вам необходимо настроить права доступа к одному файлу или каталогу, к пяти файлам или пяти каталогам. А если их полтора десятка? Или пара сотен? В таком случае вручную это будет мягко говоря непросто.
Задача в данном случае состоит вот в чём: необходимо «пробежать» все файлы и все каталоги по указанному пути, установив необходимые права.
Правильно установить права на файлы и каталоги нам поможет незаменимый инструмент командной строки — команда find. Вот как мы её запустим для каталогов:
find . -type d ! -perm 755 -exec chmod 755 {} \;
А вот так для файлов:
find . -type f ! -perm 644 -exec chmod 644 {} \;
Разберём подробно, что здесь что.
- . — (точка) указывает, что начать нужно из текушего расположения;
- -type — указывает, какой тип объекта мы будем искать — файл (f) или каталог (d);
- ! -perm — инвертированная логика параметра -perm, которая означает дословно «объекты не с таким набором прав»
- -exec — указывает, какую команду запустить для обработки результата поиска;
- {} — фигурные скобки указывают, что команде chmod передаётся результат работы find, то есть подставляется путь к текущему найденному объекту;
- \; — экранированная точка с запятой означает конец команды chmod.
Вот так быстро и эффективно мы решили нашу задачу. Команда find быстро обработает все объекты относительно текущего расположения, пропуская те, у которых набор прав соответствует нашим пожеланиям. Данный способ очень хорошо встраивается в различные сценарии автоматизации работы с файлами и каталогами.
Доступно и подробно про права доступа к файлам и каталогам можно почитать в Вики Ubuntu, а возможности команды find хорошо представлены в статье с Хабра и на OpenNet, куда же без него.