Назад | Перейти на главную страницу

Samba, FreeBSD, ZFS: разрешения групп игнорируются

Я запускаю Samba 4.6 на FreeBSD 11 с ZFS. Каждый пользователь принадлежит к группа файловых серверов. Кроме того, для каждого отдела есть дополнительные группы, например группа продаж.

И вот моя проблема. На сервере есть папка с названием продажи. Который принадлежит файловому серверу и группе продаж. Почему члены моей группы из отдела продаж не могут перезаписывать файлы через Windows внутри этой папки. Используя доступ к оболочке, редактирование работает без проблем.

Под Windows появляется сообщение Доступ к целевой папке запрещен когда я пытаюсь перезаписать файл. Новые файлы могут быть без проблем созданы внутри папки продаж. Переименование тоже работает

folder sales
chmod 770 sales
chown fileserver:sales

# file: sales
# owner: fileserver
# group: sales
owner@:rwxp--aARWcCos:-------:allow
group@:rwxp--a-R-c--s:-------:allow
everyone@:r-x---a-R-c--s:-------:allow

Внутри папки продаж находится файл test.txt

chmod 770 test.txt
chown fileserver:sales

# file: test.txt
# owner: fileserver
# group: sales
owner@:rwxp--aARWcCos:-------:allow
group@:rwxp--a-R-c--s:-------:allow
everyone@:------a-R-c--s:-------:allow

Изменение папки permissin на продажи chmod 2770 также не влияет

Только если я дам файлу те же права ACL, что и владелец, сохранение работает. Это почему? Я сделал неправильную настройку? Права доступа группы rwx должен перекрывать права ACL? Нет?

smb4.conf
[global]
# Logging
log level = 3
log file = /var/log/samba4/log.%m
max log size = 50
utmp = 0

# Domain & controller & workgroups
server string = NAS Server
workgroup = COMPANY
server string = NAS
netbios name = NAS

# Network restriction
bind interfaces only = yes
interfaces = lo0 igb0

# Security model
security = user
encrypt passwords = true
map to guest = bad user

# Time server
time server = yes

map hidden = no
map system = no
map archive = no
map readonly = no

store dos attributes = yes

ea support = yes
access based share enum = yes
load printers = no

template homedir = /fileserver/users/%U
allow insecure wide links = yes

[data]
comment = Data
path = /fileserver/data
valid users = +fileserver

browsable = yes
writable = yes
read only = no
guest ok = no
public = no
follow symlinks = yes
wide links = yes

create mask = 0770
force create mode = 0760
directory mask = 2770
force directory mode = 2770

hide unreadable = yes

vfs objects = shadow_copy2 zfsacl recycle crossrename
shadow: snapdir = .zfs/snapshot
shadow: sort = desc
shadow: format = %Y-%m-%d-%H%M

recycle:directory_mode = 0750
recycle:subdir_mode = 0750
recycle:exclude = *.tmp *.temp *.swp
recycle:keeptree = yes
recycle:repository = Trash/%U
recycle:versions = yes
recycle:touch = yes
recycle:touch_mtime = yes

nfs4:mode = special
nfs4:acedup = merge
nfs4:chown = yes

crossrename:sizelimit = 50

Итак, вы ожидаете, что доступ для чтения и записи будет работать без delete, delete_child и write_owner ? Это просто неправильно, вы находитесь не в устаревшей системе разрешений 3x3 POSIX, а в списках ACL NFSv4. Они не дополнительный до POSIX 3x3 они нормализованы. В основном вам нужен full_set ACL, вам нужен более детальный контроль, вам нужно поэкспериментировать.

И не забывайте, что вам также понадобится aclmode и aclinherit установлен в passthrough в этом наборе данных.