6

У меня есть сервер FreeNAS в сети с клиентами OSX и Windows. Когда клиенты OSX взаимодействуют с общими папками SMB/CIFS на сервере, они вызывают проблемы с разрешениями для всех других клиентов.

Обновление: я больше не могу проверить какие-либо ответы, потому что мы отказались от проекта, но не стесняйтесь размещать любую помощь для будущих посетителей.

Детали этого поведения, похоже, также зависят от версии OSX, на которой работает клиент. Для этого вопроса давайте предположим, что клиент работает с 10.8.2.

Когда я монтирую общий ресурс CIFS на клиенте OSX и создаю на нем новый каталог, он будет создан с drwxr-x-rx . Это нежелательно, потому что это не позволит никому, кроме меня, писать в каталог. В моей группе есть и другие пользователи, которые также должны иметь права на запись. Такое поведение происходит, даже если в smb.conf на сервере присутствуют следующие параметры:

[global]
create mask = 0666
directory mask = 0777
[share]
force directory mode = 0775
force create mode = 0660

У меня сложилось впечатление, что эти настройки должны убедиться, что каталоги по крайней мере созданы с разрешениями rwxrwxr-x . Но, полагаю, это не мешает клиенту изменять разрешения после создания каталога.

Когда я создаю папку на том же общем ресурсе из клиента Windows, новая папка будет иметь требуемые права доступа (rwxrwxrwx), поэтому в настоящее время я предполагаю, что проблема заключается в клиенте OSX.

Я думаю, что это не было бы такой проблемой, если бы вы могли легко изменить разрешения созданных вами каталогов, но вы не можете. При открытии информации каталога в Finder я получаю старое уведомление "У вас есть пользовательский доступ" без возможности вносить какие-либо изменения.

Я предполагаю, что это вызвано тем, что мы используем Windows ACL на общем ресурсе, но это только дикое предположение.

Изменение разрешений на запись для группы через терминал работает нормально, но это непрактично для развертывания и нецелесообразно ожидать от кого-либо.

Это полный smb.conf:

[global]
    encrypt passwords = yes
    dns proxy = no
    strict locking = no
    read raw = yes
    write raw = yes
    oplocks = yes
    max xmit = 65535
    deadtime = 15
    display charset = LOCALE
    max log size = 10
    syslog only = yes
    syslog = 1
    load printers = no
    printing = bsd
    printcap name = /dev/null
    disable spoolss = yes
    smb passwd file = /var/etc/private/smbpasswd
    private dir = /var/etc/private
    getwd cache = yes
    guest account = nobody
    map to guest = Bad Password
    obey pam restrictions = Yes
    # NOTE: read smb.conf.
    directory name cache size = 0
    max protocol = SMB2
    netbios name = freenas
    workgroup = COMPANY
    server string = FreeNAS Server
    store dos attributes = yes
    hostname lookups = yes
    security = user
    passdb backend = ldapsam:ldap://ldap.company.local
    ldap admin dn = cn=admin,dc=company,dc=local
    ldap suffix = dc=company,dc=local
    ldap user suffix = ou=Users
    ldap group suffix = ou=Groups
    ldap machine suffix = ou=Computers
    ldap ssl = off
    ldap replication sleep = 1000
    ldap passwd sync = yes
    #ldap debug level = 1
    #ldap debug threshold = 1
    ldapsam:trusted = yes
    idmap uid = 10000-39999
    idmap gid = 10000-39999
    create mask = 0666
    directory mask = 0777
    client ntlmv2 auth = yes
    dos charset = CP437
    unix charset = UTF-8
    log level = 1


[share]
    path = /mnt/zfs0
    printable = no
    veto files = /.snap/.windows/.zfs/
    writeable = yes
    browseable = yes
    inherit owner = no
    inherit permissions = no
    vfs objects =  zfsacl
    guest ok = no
    inherit acls = Yes
    map archive = No
    map readonly = no
    nfs4:mode = special
    nfs4:acedup = merge
    nfs4:chown = yes
hide dot files
force directory mode = 0775
force create mode = 0660

3 ответа3

3

Чтобы клиенты OS X не могли изменять разрешения, вам нужно добавить

unix extensions = no

в [Global] раздел вашего smb.conf

И / или добавить что-то вроде

force security mode = 0660
force directory security mode = 02770

к вашим определениям общего ресурса, чтобы сохранить права на групповую запись.

1

Измените определения общих ресурсов, чтобы они содержали только следующее:

path = /path/to/folder
browseable = yes
writeable = yes
inherit permissions = yes

Теперь измените права доступа к папкам напрямую:

# chown user:group -R /path/to/folder
# chmod 2770 -R /path/to/folder (or 2775 for public read only)

Приведенная выше команда CHMOD будет иметь "специальные" разрешения, которые позволяют папкам, удаленным в папке, автоматически принимать разрешения родителя. Для этого нужно повлиять:

/etc/init.d/samba reload

Переключатель reload не перезапускает Samba (запускает текущих пользователей), но перезагружает файл конфигурации.


Кроме того, задокументировано на FreeNAS Wiki:

Если разрешения работают для пользователей Windows, но не для пользователей OS X, попробуйте отключить расширения Unix и перезапустить службу CIFS.

0

если вы создаете эти папки внутри Terminal.app, возможно, можно установить для всей системы значение umask 002 (777 - umask = маска для исполняемых файлов и папок 666 - umask = маска для файлов) вместо 022 - это возможно

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