Linux наследование прав при копировании

Как в linux назначить права по умолчанию для каталога и всех создаваемых, копируемых и переносимых файлов и каталогов в нем?

Имеется машина под управлением GNU/Linux Debian Sid. На ней настроена авторизация доменных пользователей Windows. Все доменные пользователи включены в группу «пользователи домена».

Имеется каталог «ShareFolder» (доступ для «пользователи домена» — rwx), на который созданы симлинки в домашние каталоги пользователей (и всех новых через /etc/skel). Так же этот каталог расшарен Samba как «Общие документы» (valid user = «@пользователи домена»).

В настройках Samba для шары указанны параметры:

[Общие документы] comment = Общие документы vt-4 path = /var/ShareFolder read only = no create mask = 0660 directory mask = 0770 force group = "пользователи домена" valid users = "@пользователи домена"

То есть, что бы там пользователи не делали в шаре, все данные будут доступны по правам. Но, локальные пользователи таких настроек не имеют и могут создать каталог/файл, который не будет доступен другим пользователям ни локально, ни через шару.

Собственно вопрос в том, как реализовать «create mask» и «directory mask» для локальных пользователей?

  • ACL — назначить по умолчанию для каталога «ShareFolder» группу «пользователи домена» и «mask» значения rwx.
    Но, тогда все файлы будут с правами на исполнение, а это не очень хорошо.
  • fstab — перенести «ShareFolder» куда-нибудь и на его место смонтировать его же, но с umask=0 0 7.
    Только вот не у всех пользователей первичная группа «пользователи домена». Да и распространяется это только на создаваемые файлы.
  • cifs — смонтировать шару по аналогии с предыдущем вариантом.
    Пока наиболее «чистый» результат на выходе, но уж больно много посредников.
  • pam — не уверен, но если в
    /etc/pam.d/common-session
    /etc/pam.d/common-session-noninteractive
    добавить «session optional pam_umask.so umask=0007», то даже при копировании будут меняться права. Но это глобальная опция и как заставить ее работать исключительно для одного каталога неясно.
Читайте также:  Manjaro linux secure boot

Источник

Linux наследование прав при копировании

Как изменяются права доступа при копировании и перемещении файла.


  • кто копирует (перемещает) файлы, root или обычный юзер
  • какие программы и с какими ключами при этом используются
  • копируется файл «на пустое место» или там уже существует файл с таким именем

Тем не менее, попробуем найти несколько общих правил, определяющих — какие права доступа могут получится в результат.

Во-первых, при копировании (например, командой cp ) создается новый файл, а при перемещении (например, командой mv ) меняется только место расположения файла (и, возможно, имя).

Поэтому, если «рядовой юзер» копирует файл, то действуют все те же правила, что и при создании файла. То есть, владельцем копии становится юзер, который ее создал, группа «наследуется» от директории, а сами права доступа определяются параметром umask.

Строго говоря, если копирование делает root, то эти правила действуют и для него (то есть, владельцем полученной копии будет root , группа будет взята от директории, а права выставятся в соответствии с umask ). Однако, root может изменить поведение команды cp . У этой команды есть ключ ( -p — сохранять p ermissions) который означает, что надо сохранить все атрибуты (владельца, группу и permissions) при копировании.

Обычный же юзер, даже используя ключ -p не сможет сохранить владельца и группу, но получит permissions такие же как у оригинального файла. К тому же биты suid и sgid при этом также «сбрасываются».

Существует еще одна ситуация, когда при копировании сохраняются все атрибуты доступа. Это происходит, когда в «месте назначения» файл с таким именем уже существует. Собственно, в этом случае файл не создается, а только замещается его содержимое. Поэтому, даже если эту операцию проделает обычный юзер (естественно, для этого надо, чтобы ему было разрешено писать в существующий файл), все атрибуты, в том числе владелец и группа сохранятся. Правда, биты suid и sgid все равно «сбросятся».

А вот при перемещении файла все атрибуты сохраняются (даже «опасные» биты suid и sgid ). Однако, не забудьте, что для того, чтобы обычный юзер смог переместить чужой файл, он должен иметь право записи и в ту директорию, куда файл переносится и в ту, откуда он переносится (поскольку, там запись о файле должна быть удалена). Такие ситуации в нормальной системе, как правило, не встречаются.

Источник

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

На самом деле, речь в этой статье пойдёт не только о наследовании прав на файлы и каталоги в операционных системах семейства 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 те же права по умолчанию, что и у владельца каталога.

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

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

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

Кроме наследования прав есть и другие особенности 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 являются каталогами, между которыми мы копируем права по умолчанию.

Источник

Оцените статью
Adblock
detector