Сменить владельца для всех папкок и файлов, лежащих в данной папке
Чтобы сменить владельца, в *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 {} \;
Комментариев нет:
Отправить комментарий