Вопрос или проблема
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:
-
Конфигурация smb.conf:
-
inherit acls = yes
: Этот параметр должен быть установлен вyes
, чтобы Samba старалась наследовать ACL. Это первый и ключевой шаг. -
map acl inherit = yes
: Параметр, который включает поведение более близкое к Windows в работе с ACL. Когда он включен, Samba может лучше обрабатывать особенности наследования ACL, характерные для Windows.
-
-
Корректные права файловой системы:
Убедитесь, что файловая система, на которой размещены ваши шары, поддерживает ACL, и они включены. Это можно сделать командой
tune2fs -l /dev/sdX | grep "Default mount options:"
, проверяя наличие меткиacl
. -
Проверка и правка прав на уровне ОС:
Используйте команды вроде
getfacl
иsetfacl
для проверки и установки прав непосредственно на файловой системе.
Применение
Итак, на практике, чтобы исправить вашу ситуацию, выполните следующие шаги:
-
Исправьте конфигурацию:
Проверьте и измените ваш
smb.conf
, внеся следующие изменения:[your_share] path = /path/to/share inherit acls = Yes map acl inherit = Yes nt acl support = Yes
Эти параметры обеспечат более корректное наследование ACL от родительской директории.
-
Перезагрузите Samba:
После изменения конфигурации перезапустите Samba, чтобы изменения вступили в силу:
sudo systemctl restart smbd
-
Проверьте ACL на файловой системе:
Убедитесь, что родительская директория имеет корректно настроенные права, которые вы хотите наследовать:
getfacl /path/to/share
Если необходимо, задайте дополнительные права:
setfacl -m g:groupname:rx /path/to/share
-
Тестируйте изменения:
На клиенте Windows создайте новый файл или папку и проверьте, наследуются ли ACL. Если проблема сохраняется, тщательно перепроверьте как файл конфигурации Samba, так и права доступа на уровне файловой системы.
Таким образом, корректная настройка параметров наследования в smb.conf
в сочетании с правильной конфигурацией ACL на уровне ОС обеспечит желаемое поведение и снимет проблему с ненаследованием прав доступа для новых объектов. Ваша задача — внимательно следовать описанным шагам и при необходимости обращаться к документации для вашей конкретной версии Samba и используемой файловой системы.