Страницы

Как изменить права на файлы или папки в Linux

Сменить владельца для всех папкок и файлов, лежащих в данной папке


Чтобы сменить владельца, в *nix используется команда chown. Первая группа параметров данной команды - опции. Для того, чтобы изменения коснулись не только данной директории, но и всех поддиректорий, нужно применить команду рекурсивно с параметром "-R".


Вторая группа параметров - это владелец и группа владельцев, разделённые двоеточием (можно не устанавливать группу тогда это просто логин владельца)  "user:group" или "user".


Третья же группа параметров это пути до папок / файлов, к которым нужно применить команду. Например, "/home/user/dir/".


Итак, команда смены владельца и группы владельцев для директории и всех поддиректорий с файлами будет выглядеть так:


sudo chown -R user:group /home/user/dir/


Sudo говорит о том, что команда будет исполняться с повышенными привилегиями обычный пользователь не способен изменить ни владельца, ни группу.

 

Изменить права доступа на файл или папку


Помимо владельца, можно настроить, что же может этот самый владелец и группа, а также все остальные. В Unix идёт разделение возможностей именно таким образом есть 3 группы прав: владелец, группа владельцев и другие. И права, что можно присвоить каждой группе:

  • Право на запуск файла. Оно же право на проход по директории (если устанавливаем права на директории).
  • Право на изменение файла. Оно же - право на создание и удаление файлов и папок в директории (опять же, если устанавливается для папки).
  • И право на чтение файла. Для папок - это право на просмотр содержимого папки.

Кодируются эти права следующим образом: запуск - 1, изменение - 2, чтение - 4. Складывая их мы получим набор прав, предоставляемый владельцу/группе/другим.

Права на доступ изменяются командой chmod.

Примеры:

  • Изменять файл имеет право только владелец, группа владельце может читать, остальные - ничего не могут: chmod 640 /media/share/file.txt
  • Создавать файлы в папке могут все, но видит их только владелец: chmod 622 /media/share/messages/
  • Есть программа, которая не хочет запускаться - не хватает прав на исполнение. Нужно, чтобы все могли её запустить, но никто, кроме владельца, не мог её редактировать: chmod 711 /media/share/exec

Для рекурсивного изменения прав используется опять же ключ "-R". Например, chmod -R 700 /home/user - доступ к файлам и папкам /home/user останется только у владельца.


Стоит заметить, что изменять права на файлы и директории могут администраторы и владелец этих папок и файлов.

Изменение прав только на файлы или только на папки


Вышеприведённый пример рекурсивного изменения прав на файлы и папки в /home/user/ не так уж и хорош, как может показаться. Мы сделали, чтобы теперь и обычные файлы могли запускаться. Это может привести к проблемам, если среди фалов были примеры программ, на которые специально были выставлены права без запуска, дабы случайно не исполнить хранимые программы. Если бы мы поставили права 600 мы бы потеряли доступ к подпапкам и файлам, лежащим в них, ибо без права "на исполнение" (оно же  "право перехода по папке"), мы бы не смогли до них добраться.


Так что мухи - отдельно, котлеты - отдельно. Зададим права сначала для одних, потом для других. В этом нам поможет команда find.


find /home/user -type f -exec chmod 600 {} \;


Вроде всё понятно: найти в /home/user все объекты, типа file (f) и выполнить для них chmod 600.


Или же для директорий:


find /home/user -type d -exec chmod 700 {} \;
 
 

Комментариев нет:

Отправить комментарий