У меня есть сервер, работающий под управлением PC-BSD (FreeBSD) 10 и чистого хранилища ZFS. Я создал jail с помощью Warden и установил Samba 4. Я подготовил домен, используя параметры ntvfs и rfc2307, как рекомендовано для установок FreeBSD+ZFS. Я использую два zpool в своей установке. Первый zpool имеет зеркальную пару дисков по 1 ТБ, и он содержит все тома для операционной системы и любых jail, которые я настроил. Второй zpool имеет четыре пары дисков по 4 ТБ, обеспечивающих объемное хранение. Тома, выделенные из этого второго zpool, заключены в jail и смонтированы в jail, который я настроил для Samba. Все в этой настройке работает хорошо, за исключением списков контроля доступа. Я включил следующие параметры в свой файл smb4.conf, которые, если я правильно понимаю, должны позволить Samba использовать списки контроля доступа ZFS для хранения разрешений Windows:
объекты vfs = zfsacl
nfs4:mode = special
mfs4:acedup = merge
nfs4:chwon = yes
Я также установил aclmode=passthrough и aclinherit=passthrough на всех томах ZFS, которые использует Samba. Однако, что бы я ни пробовал, списки контроля доступа ZFS игнорируются. Пользователи Samba видны (я могу войти в систему, используя свое имя пользователя и пароль Samba, мое имя пользователя отображается в списках каталогов), и я могу назначать разрешения ACL для других пользователей Samba на файлы с помощью команды setfacl. Однако Samba полностью игнорирует списки контроля доступа ZFS, а все списки контроля доступа Windows хранятся в расширенном атрибуте user.NTACL. Я хотел бы, чтобы разрешения Windows хранились в списках контроля доступа ZFS, чтобы доступ был согласованным между пользователями, вошедшими в систему через SSH, и пользователями, получающими доступ к общим ресурсам через Windows.
Я уверен, что это просто результат того, что я где-то упустил какой-то небольшой, но важный параметр или опцию, и я надеюсь, что кто-то сможет направить меня на правильный путь. Если вам нужна дополнительная информация о моей системе, дайте мне знать, и я ее опубликую.
РЕДАКТИРОВАТЬ
Ну, после нескольких дней интенсивных поисков в сети, я, кажется, нашел проблему — я использовал NTVFS вместо S3FS. Когда я настраивал свой сервер Samba много месяцев назад, я столкнулся с проблемами со скриптом предоставления домена, который не работал из-за ZFS. Решением было добавить опцию "--use-ntvfs", как упоминалось в ряде различных руководств. Возможно, это была необходимая опция для версии Samba4, которая была актуальной на момент установки, но похоже, что модуль zfsacl не работает с NTVFS в версии, которую я сейчас запускаю (4.0.25). После изменения моего файла smb4.conf для использования S3FS, модуль zfsacl внезапно начал делать свое дело.
TL;DR - используйте S3FS, а не NTVFS с модулем zfsacl