Я хочу установить контроллер домена Samba на хостах FreeBSD, которые используют ZFS для хранения файлов.
Когда я пытаюсь бежать samba-tool domain provision
как указано на Статья Samba Wiki о настройке контроллера домена, Я получаю сообщение об ошибке, говорящее, что мне нужно включить списки контроля доступа POSIX. В соответствии с Страница FreeBSD на ZFS, ZFS на FreeBSD поддерживает только ACL в стиле NFSv4, который к настоящему времени полностью реализован, но несовместим с ACL в стиле POSIX.
Затем я пришел с неофициальным руководство по настройке контроллера домена Samba на FreeBSD, где решение состоит в том, чтобы просто предоставить --use-ntvfs
флаг при звонке samba-tool
, который я могу подтвердить, работает. Однако, согласно статус функции AD DC на Samba, функция NTVFS устарела в 2010 году, что не выглядит многообещающим.
Сейчас я на распутье. Я могу придумать два способа настроить этот DC, а именно с помощью --use-ntvfs
или создав том и отформатировав его с помощью UFS. Но я не могу предвидеть плюсы и минусы этих решений.
Каковы последствия использования --use-ntvfs
? Это что-то, что можно изменить впоследствии, или я застрял с выбором, пока не предоставлю совершенно новый домен?
Если вы не возражаете против работы, вы можете попробовать следующее: https://sourceforge.net/projects/libsunacl/
Думаю, это потребует некоторой компиляции. Вы можете найти больше информации здесь: https://wiki.freebsd.org/NFSv4_ACLs
Забудьте о списках ACL POSIX.1e с Samba - они просто не имеют смысла, поскольку Windows использует модель ACL, которая полностью отличается от POSIX.1e, и невозможно правильно преобразовать между ними (что не мешает некоторым людям, особенно в сообществе Linux Kenrel, от попыток - но это просто не может работать хорошо по причинам дизайна). Используйте списки ACL NFSv4, они почти такие же, как и в Windows.
Что касается компиляции - на самом деле порт и пакет Samba по умолчанию построены с поддержкой ACL. Просто убедитесь, что всегда установлены свойства ZFS "aclmode = passthrough" и "aclinherit = passthrough"; иначе наследование просто не сработает.