Наследование прав на файлы и папки в Linux

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

Многие пользователи Windows в курсе, как работает система наследования прав. Суть её в том, что пользователи и группы будут иметь те же права на файлы и каталоги, которые они имели по отношению к родительскому каталогу. В Linux механизм наследования работает схожим образом и называется «правами по умолчанию». Несмотря на своё название, права по умолчанию вовсе не задаются автоматически. Их нужно прописать отдельно. Для примера используем каталог пользователя test:

setfacl -d -m u::rwx,g::r-x,o::r-x /home/test/

Наследование прав на файлы и папки в Linux

-d указывает, что команда задаёт права по умолчанию, -m на редактирование прав.

Как видим на скриншоте, использование команды getfacl показало, что в свойствах каталога появились строчки, начинающиеся с default. Именно они и говорят нам о правах по умолчанию для владельца, ассоциированной группы и всех остальных. Не будем забывать, что ACL дозволяет установку прав доступа для отдельных пользователей и групп. Воспользуемся данной возможностью:

setfacl -d -m u:tux:rwx /home/test

Наследование прав на файлы и папки в Linux

Этой командой мы дали пользователю tux те же права по умолчанию, что и у владельца каталога.

Для удаления прав по умолчанию используется команда

setfacl -k /home/test/

Наследование прав на файлы и папки в Linux

Если нужно удалить права по умолчанию и в подкаталогах, то добавьте ключ -R, указывающий на рекурсивное действие:

setfacl -R -k /home/test/

Кроме наследования прав есть и другие особенности ACL, которые будет полезно рассмотреть. Первым делом рассмотрим сохранение (или нет) ACL-прав при операциях над файлами и папками:

  • перемещение файлов и каталогов сохраняет ACL-доступы;
  • копирование файлов и каталогов не сохраняет ACL-доступы, если не использован ключ -p;
  • архивирование и распаковка должны проводиться утилитой star (вместо tar).

Как видим, логика операций здесь довольно проста.

Другой интересной возможностью в работе с ACL-правами доступа будут так называемые автоматические операции.

Первой из таких операций является перенос ACL-прав. Это значит, что мы снимаем ACL-права с одного объекта и придаём их другому. Ранее мы рассматривали файл file_test в каталоге /home/test/. Перенесём ACL-доступы с него на файл file_test2 командой

getfacl /home/test/file_test | setfacl --set-file=- /home/test/file_test2

Наследование прав на файлы и папки в Linux

На скриншоте выше можно наблюдать права на файл file_test2 до и после применения команды по переносу ACL-прав.

Если же нужно не перенести, а скопировать ACL-права с одного объекта на другой, то здесь поможет другая команда:

getfacl /home/test/file_test | setfacl -M- /home/test/file_test2

Эта команда не заменит права, как предыдущая, а добавит их к уже существующим.

Еще одним неплохим приемом может стать копирование ACL-прав на каталог в права по умолчанию этого же каталога. По сути, это то же самое, что мы провернули в начале статьи. Вот только тогда мы могли задать любые другие права по умолчанию. А вот если нам надо именно скопировать текущие права, то будет проще воспользоваться следующей командой:

getfacl --access /home/test/dir1/ | setfacl -d -M- /home/test/dir2/

Здесь dir1 и dir2 являются каталогами, между которыми мы копируем права по умолчанию.

Добавить комментарий

Ваш адрес email не будет опубликован.