Я создаю сервер резервного копирования, используя Linux, ZFS и Samba. Все клиенты, кроме меня, будут использовать Windows 10, поэтому я сосредотачиваюсь на правильной поддержке Windows 10, но это не означает, что разрешения на стороне Linux должны быть небезопасными (т. Е. Доступными для чтения и записи).
После ошибочного удаления ACL-списков POSIX для всех файлов, считая, что они изначально были настроены для предоставления группового доступа, все разрешения для файлов на стороне Windows были нарушены.
Это было исправлено путем обхода каждого параметра в руководстве и повторного конфигурирования. Я выяснил, какие параметры нужно установить, чтобы получить желаемое поведение, а именно - установить разрешения только на стороне Windows, сохраняя при этом разрешения UNIX безопасными, однако есть еще 2 вещи, которые я не понимаю о том, как Samba работает с разрешениями UNIX.
Установка acl_xattr:ignore system acls = no
приводит к тому, что разрешения UNIX становятся записями в списках ACL Windows (CREATOR, GROUP и EVERYONE), которые мне не нужны, однако при значении yes
владелец, группа и разрешения по-прежнему влияют разрешения на стороне Windows, они все еще применяются Samba. Если каталог имел права root:backup 0660
, то случайный Domain User
не будет иметь доступа к этому каталогу, даже если в списках ACL Windows есть запись для Domain Users
. Изменив группу из backup
на users
которых users
отображаются в группе Domain Users
NT, она будет работать. Очевидно, что разрешения UNIX все еще применяются.
Существует ли параметр, позволяющий спискам ACL Windows налагать вето на остальных, т. Е. Если списки ACL Windows разрешают Domain Users
, то они будут разрешены независимо от того, что могут сказать разрешения UNIX? Или я мог просто отключить Samba, используя разрешения UNIX?
Другой вопрос, как Samba хранит разрешения UNIX. В новой конфигурации мне пришлось inherit owner = yes
. Похоже, это работало, как и ожидалось, в обеих Windows и UNIX, за исключением случаев, когда я пытался изменить группу UNIX на что-то другое. Первоначально бит setgid был установлен на акциях с john
качестве их группы, думая, что inherit owner
влияет только на владельца, а не на группу. Однако при удалении бита setgid из общих ресурсов и рекурсивном изменении группы на users
с помощью команды inherit owner = yes
новые файлы и каталоги, созданные с помощью клиента Windows 10, по-прежнему создавались с группой « john
. Нигде в дереве каталогов не было каталога с группой john
, я на всякий случай попытался перезапустить свой клиент Windows и сервер Samba, но это ничего не изменило.
Сохраняет ли Samba разрешения UNIX где-либо еще, поэтому изменение группы UNIX непосредственно из файловой системы не влияет на группу, отслеживаемую Samba? Или что может быть причиной того, что Samba все еще использует эту старую группу для новых файлов и каталогов?
Ниже вы можете найти потенциально важные параметры конфигурации Samba версии 4.7.6. Если нужна дополнительная информация, дайте мне знать.
[global]
access based share enum = yes
acl group control = no
acl map full control = yes
acl_xattr:ignore system acls = yes
acl_xattr:default acl style = windows
create mask = 0775
directory mask = 0775
dos filemode = yes
dos filetime resolution = no
dos filetimes = yes
ea support = no
force create mode = 0600
force directory mode = 0600
force unknown acl user = no
guest account = nobody
guest ok = no
guest only = no
inherit acls = no
inherit owner = unix only
inherit permissions = no
invalid users = root
map acl inherit = yes
map archive = no
map hidden = no
map readonly = no
map system = no
map to guest = never
nt acl support = yes
obey pam restrictions = no
read only = yes
restrict anonymous = 2
security = user
server role = active directory domain controller
store dos attributes = yes
unix extensions = yes
vfs objects = dfs_samba4 acl_xattr shadow_copy2
[backups]
create mask = 0660
directory mask = 0770
ea support = yes
path = /mnt/pool/backups
read only = no