1

Я создаю сервер резервного копирования, используя 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

1 ответ1

0

Сохраняет ли Samba разрешения UNIX где-либо еще, поэтому изменение группы UNIX непосредственно из файловой системы не влияет на группу, отслеживаемую Samba? Или что может быть причиной того, что Samba все еще использует эту старую группу для новых файлов и каталогов?

Я только смог найти ответ на этот второй вопрос. Во время моих экспериментов с inherit owner я в какой-то момент хотел узнать, какие значения были сохранены как часть списков ACL NT, поэтому я проверил каталог с помощью samba-tool ntacl get /path/to/dir и, к своему удивлению, увидел старый GID в качестве значения group_sid . И поскольку у меня больше не было никакой другой ссылки на старый GID где-либо еще в файловой системе, это, вероятно, является причиной того, что Samba держится за старую группу UNIX, тем более, что всякий раз, когда я устанавливаю для атрибута «владелец» unix only или no , он будет не иметь старую группу UNIX. Таким образом, очевидно, что для атрибута inherit owner yes (то есть для unix and windows) Samba устанавливает группу UNIX для группы, хранящейся в списках AC NT.

Я все еще хотел бы получить ответ на первый вопрос, но я нашел обходной путь, найдя способ сопоставления Domain Users группы NT с моей предпочтительной группой UNIX и установив права доступа других пользователей к 0 с помощью списков ACL POSIX: setfacl -Rm d:o:---,o:--- /my/share .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .