web-dev-qa-db-ja.com

OS Xクライアントを使用してSambaでグループ書き込み可能な共有を保持するにはどうすればよいですか?

私はOSXとWindowsクライアントとのネットワーク上にFreeNASサーバーを持っています。 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でディレクトリ情報を開くと、変更を加えることができない古い「カスタムアクセスがあります」という通知が表示されます。

enter image description here

これは、共有で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
6
Der Hochstapler

OS Xクライアントがアクセス許可を変更しないようにするには、追加する必要があります

unix extensions = no

smb.confの[グローバル]セクションに移動します

および/または次のようなものを追加します

force security mode = 0660
force directory security mode = 02770

グループ書き込み権限を保持するために共有定義に追加します。

3
mivk

共有定義を変更して、次のものだけを含めます。

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サービスを再起動してみてください。

1
Canadian Luke

terminal.app内にこれらのフォルダーを作成する場合は、システム全体のumaskを022ではなく002(777-umask =実行可能ファイルとフォルダーのマスク666-umask =ファイルのマスク)に設定する可能性があります。

0
konqui