Наследование ACL в Samba

Вопрос или проблема

Samba версия 4.9.5-Debian,
есть общие каталоги с некоторыми групповыми разрешениями и некоторыми личными разрешениями, предоставленными через ACL (+).
Когда клиент Windows создает какой-либо файл или подкаталог, он не создается с унаследованными от родительского каталога разрешениями, а мне нужно именно это.

У меня в файле smb.conf следующие строки:

inherit acls = true
nt acl support = true
map acl inherit = false
dos filemode = false
store dos attributes = true
acl allow execute always = false
acl group control = false
acl map full control = true
force unknown acl user = false

Возможно, мне следует проверить, что “map acl inherit = yes”, или прочитать официальную документацию, как было предложено в подобном вопросе

.

Ответ или решение

Настройка Samba для корректной унаследованности ACL (Access Control List — список управления доступом) — частый вопрос у администраторов, которым необходимо обеспечить корректное наследование прав доступа от родительской директории к создаваемым в ней файлам и папкам. Давайте подробно рассмотрим вашу ситуацию и возможные решения.

Теория

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

Наследование ACL — это процесс автоматического применения прав доступа от родительской директории к дочерним элементам. В системах Windows это работает "из коробки", но в комбинации с Samba и Unix это требует дополнительной настройки.

Ваша версия Samba — 4.9.5, и вас беспокоит то, что при создании файлов или папок клиентами на Windows, эти объекты не наследуют все права доступа от родительской папки. Судя по вашему конфигурационному файлу smb.conf, вы уже предприняли несколько шагов для решения этой проблемы, но есть нюансы, которые следует учесть.

Пример

Давайте рассмотрим общие практики настройки Samba для корректного наследования ACL:

  1. Конфигурация smb.conf:

    • inherit acls = yes: Этот параметр должен быть установлен в yes, чтобы Samba старалась наследовать ACL. Это первый и ключевой шаг.

    • map acl inherit = yes: Параметр, который включает поведение более близкое к Windows в работе с ACL. Когда он включен, Samba может лучше обрабатывать особенности наследования ACL, характерные для Windows.

  2. Корректные права файловой системы:

    Убедитесь, что файловая система, на которой размещены ваши шары, поддерживает ACL, и они включены. Это можно сделать командой tune2fs -l /dev/sdX | grep "Default mount options:", проверяя наличие метки acl.

  3. Проверка и правка прав на уровне ОС:

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

Применение

Итак, на практике, чтобы исправить вашу ситуацию, выполните следующие шаги:

  1. Исправьте конфигурацию:

    Проверьте и измените ваш smb.conf, внеся следующие изменения:

    [your_share]
    path = /path/to/share
    inherit acls = Yes
    map acl inherit = Yes
    nt acl support = Yes

    Эти параметры обеспечат более корректное наследование ACL от родительской директории.

  2. Перезагрузите Samba:

    После изменения конфигурации перезапустите Samba, чтобы изменения вступили в силу:

    sudo systemctl restart smbd
  3. Проверьте ACL на файловой системе:

    Убедитесь, что родительская директория имеет корректно настроенные права, которые вы хотите наследовать:

    getfacl /path/to/share

    Если необходимо, задайте дополнительные права:

    setfacl -m g:groupname:rx /path/to/share
  4. Тестируйте изменения:

    На клиенте Windows создайте новый файл или папку и проверьте, наследуются ли ACL. Если проблема сохраняется, тщательно перепроверьте как файл конфигурации Samba, так и права доступа на уровне файловой системы.

Таким образом, корректная настройка параметров наследования в smb.conf в сочетании с правильной конфигурацией ACL на уровне ОС обеспечит желаемое поведение и снимет проблему с ненаследованием прав доступа для новых объектов. Ваша задача — внимательно следовать описанным шагам и при необходимости обращаться к документации для вашей конкретной версии Samba и используемой файловой системы.

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

Капча загружается...