Серверная (www.it-simple.ru)

Linux: разные права на файлы и каталоги из консоли


Иногда встречаются ситуации, когда для операций с файлами и каталогами (то есть с какой-либо веткой дерева файловой системы) необходимо выставлять для них полные права. Сделать это достаточно просто:

cd /нужный/каталог
chmod -R 0777 ./

Долгое время я не мог разобраться, как из консоли вернуть все права в исходное состояние.

Объясняю. Стандартные права на каталоги - 0755 (rwxr-xr-x), то есть владелец может редактировать содержимое, а все остальные пользователи - только читать, но для всех пользователей установлен ключ на выполнение (+x).

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

С другой стороны, стандартные права для файлов - 0644 (rw-r--r--), то есть разделение прав такое же, но файлы не являются исполняемыми. Например, это верно для файлового сервера, где лежат документы, рисунки и другие файлы мультимедиа.

В любом графическом файловом менеджере есть настройка для раздельного задания прав файлам и каталогам, но, например, на том же файловом сервере графики нет и быть не может.

Для того, чтобы задать разные права на файлы и каталоги в консоли, нужно выполнить:

cd /нужный/каталог
chmod -R 0755 ./
find ./ -type f -exec chmod -x {} \;

Переходим в нужный каталог, меняем рекурсивно права на файлы и папки на 0755, потом в этом же каталоге ищем файлы и для каждого найденного убираем ключ на исполнение.

Или, как в примере по ссылке:

find ./ -type f -exec chmod 0644 {} \;
find ./ -type d -exec chmod 0755 {} \;

Здесь примерно то же, но файлы и каталоги ищутся по отдельности. Результат - такой же.