Изменить права на файлы или папки в Linux
Feb. 24th, 2013 12:32 pmИзменить права на файлы или папки в Linux

Работая в Linux (равно как и во FreeBSD и Windows), нужно не забывать о правах доступа на файлы и папки.
Ниже приведённые рецепты помогут решить 90% проблем, возникающих при настройке прав доступа.
Сменить владельца для всех папкок и файлов, лежащих в данной папке
Чтобы сменить владельца, в Unix используется команда chown. Первая группа параметров данной команды -- опции. Для того, чтобы изменения коснулись не только данной директории, но и всех поддиректорий, нужно применить команду рекурсивно -- с параметром "-R".Вторая группа параметров -- это владелец и группа владельцев, разделённые двоеточием (можно не устанавливать группу -- тогда это просто логин владельца) -- "user:group" или "user".
Третья же группа параметров -- это пути до папок / файлов, к которым нужно применить команду. Например, "/home/user/dir/".
Итак, команда смены владельца и группы владельцев для директории и всех поддиректорий с файлами будет выглядеть так:
sudo chown -R user:group /home/user/dir/Sudo говорит о том, что команда будет исполняться с повышенными привилегиями -- обычный пользователь не способен изменить ни владельца, ни группу.
Изменить права доступа на файл или папку
Помимо владельца, можно настроить, что же может этот самый владелец и группа, а также все остальные. В Unix идёт разделение возможностей именно таким образом -- есть 3 группы прав: владелец, группа владельцев и другие. И права, что можно присвоить каждой группе:- Право на запуск файла. Оно же -- право на проход по директории (если устанавливаем права на директории).
- Право на изменение файла. Оно же -- право на создание и удаление файлов и папок в директории (опять же, если устанавливается для папки).
- И право на чтение файла. Для папок -- это право на просмотр содержимого папки.
Права на доступ изменяются командой chmod.
Примеры:
- Изменять файл имеет право только владелец, группа владельце может читать, остальные -- ничего не могут:
chmod 640 /media/share/file.txt - Создавать файлы в папке могут все, но видит их только владелец:
chmod 622 /media/share/messages/ - Есть программа, которая не хочет запускаться -- не хватает прав на исполнение. Нужно, чтобы все могли её запустить, но никто, кроме владельца, не мог её редактировать:
chmod 711 /media/share/exec
chmod -R 700 /home/user -- доступ к файлам и папкам /home/user останется только у владельца.Стоит заметить, что изменять права на файлы и директории могут администраторы и владелец этих папок и файлов.
Изменение прав только на файлы или только на папки
Вышеприведённый пример рекурсивного изменения прав на файлы и папки в /home/user/ не так уж и хорош, как может показаться. Мы сделали, чтобы теперь и обычные файлы могли запускаться. Это может привести к проблемам, если среди фалов были примеры программ, на которые специально были выставлены права без запуска, дабы случайно не исполнить хранимые программы. Если бы мы поставили права 600 -- мы бы потеряли доступ к подпапкам и файлам, лежащим в них, ибо без права "на исполнение" (оно же -- "право перехода по папке"), мы бы не смогли до них добраться.Так что мухи -- отдельно, котлеты -- отдельно: зададим права сначала для одних, потом -- для других. В этом нам поможет команда find.
find /home/user -type f -exec chmod 600 {} \; Немного магии Или же для директорий:
find /home/user -type d -exec chmod 700 {} \; Что ещё можно посмотреть
Крайне полезны могут быть утилиты find, grep для поиска и фильтрации работы команд. chown и chmod также умеют больше, чем здесь описано. Есть ещё chattr -- для смены атрибутов папок и файлов (про атрибуты -- в другой раз). Все выше перечисленные утилиты имеют хорошую документацию. Чтобы её увидеть, нужно набрать в консоли man имя_утилиты.Думаю, этих знаний хватит на первое время всем тем, кто решил настроить права в своём Linux (и Unix).
Больше понятной и полезной информации можно получить, заглянув в рубрику "Настройка" или, найдя статьи с меткой "Я познаю мир" .