Настройка прав доступа к файлам и каталогам

Все пользователи ОС 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, куда же без него.


Сайт принадлежит ООО Группа Ралтэк. 2014 — 2022 гг