如何使用 OSX 客户端保留 Samba 上的组可写共享?

如何使用 OSX 客户端保留 Samba 上的组可写共享?

我在网络上有一台 FreeNAS 服务器,该服务器配有 OSX 和 Windows 客户端。当 OSX 客户端与服务器上的 SMB/CIFS 共享交互时,它们会给所有其他客户端带来权限问题。

更新:由于我们放弃了该项目,我无法再验证任何答案,但请随时为未来的访问者发布任何帮助。

此行为的细节似乎还取决于客户端运行的 OSX 版本。对于这个问题,我们假设客户端运行的是 10.8.2。

当我在 OSX 客户端上安装 CIFS 共享并在其上创建新目录时,将创建具有权限的目录。这是不可取的,因为它不允许除我之外的任何人写入目录。我的组中还有其他用户也应该具有写入权限。即使服务器上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

答案1

为了防止 OS X 客户端更改权限,您需要添加

unix extensions = no

到 smb.conf 的 [Global] 部分

或者添加类似

force security mode = 0660
force directory security mode = 02770

您的共享定义以保留组写入权限。

答案2

更改您的共享定义以仅包含以下内容:

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 维基

如果权限对 Windows 用户有效但不对 OS X 用户有效,请尝试禁用 Unix 扩展并重新启动 CIFS 服务。

答案3

如果你在 Terminal.app 中创建这些文件夹,那么可以将系统范围的 umask 设置为 002(777 - umask = 可执行文件和文件夹的掩码 666 - umask = 文件的掩码)而不是 022。

答案4

我的设置不太顺利unix extensions = no—— 可能是因为我正在使用 VFS 模块vfs_fruit来增强与 macOS 客户端的互操作性。

如果您正在使用vfs_fruit,则以下设置可以解决问题:

fruit:nfs_aces = no

这将阻止 macOS 客户端编写自己的 ACL 并干扰 UNIX 权限。

[global]这是我的章节的相关部分smb.conf

fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
fruit:time machine = yes
fruit:nfs_aces = no
inherit permissions = yes
inherit acls = yes
acl group control = yes
vfs objects = catia fruit streams_xattr

请注意,这是默认unix extensions设置。yes

在共享中,目录具有drwxrwsr-x(即设置了 SETGID 位)权限,并且属于应该具有访问权限的共同用户组。此外,目录还具有 ACL default:group::rwx(使用 设置setfacl -m default:group::rwx $dirname)。

相关内容