Samba共有フォルダのSetgidの問題

Samba共有フォルダのSetgidの問題

共有ディレクトリを持つファイルサーバーを設定しています。内部には、すべてのユーザーが読み取ることができるユーザー固有のフォルダーと、すべてのユーザーが読み書きできる共有ディレクトリがあります。ユーザー固有のフォルダは非常に簡単です。しかし、共有フォルダにはいくつかの問題があります。 GIDフォルダを作成する標準的な手順に従いました。

# chown root shared
# chmod -R ug+rwX shared
# chgrp -R users shared
# find shared -type d -exec chmod g+s "{}" \;
# find shared -type d -exec setfacl -m "default:group::rwx" "{}" \;

すべてのユーザーが「users」グループにいることを確認したら、コンソール、ssh、rsyncなどを介して直接ログインすると完全に機能します。しかし、サンバにはいくつかの問題があります。

デフォルトのSamba設定では、SGIDビットとGIDが伝播されますが、新しいファイルとフォルダにはグループ書き込みビットが設定されていません。これはACLが無視されるためと思われます。 ~によるとSamba は POSIX ACL を無視します。解決策はsmb.confに追加することですvfs objects = acl_xattr。設定してみると、グループ書き込み権限が正しく設定されていました。ただし、グループは親ディレクトリのグループではなくユーザーのホームグループに設定されるため、GID ビットの設定目的は無効になります。リンク(、および)に記載されている他のsmb.confを調整しようとしましたが、map acl inherit = yes効果はありませんでしたstore dos attributes = yesinherit acls = yesこれを行う正しい方法は何ですか?

答え1

新しいファイルとフォルダのグループ、ユーザー、および権限を設定するには、サーバーで次の設定を使用します(smb.conf)。

[shared-folder]
   writeable = yes
   force user  = "user"
   force group = "users"
   create mask = 0664
   force create mode = 0664
   directory mask = 0775
   force directory mode = 0755

別の共有フォルダを使用すると、この方法でパブリックフォルダを処理できます。

メモ:説明で説明したように、この設定はACLと互換性がない可能性があります。 UNIX権限にのみ依存している場合にのみこれを実行することをお勧めします。

答え2

この場合は、次のマニュアルページにvfs objects = acl_xattr自動的にinherit acls = yes従います。inherit aclssmb.conf

VFSモジュールを使用する場合acl_xattrまたは、デフォルトのWindowsをメタデータとして保存するacl_tdbは、Windows ACLを正しくエミュレートするためにこのオプションが必要なため、ロードされたすべての共有に対してこのオプションを自動的にオンにします。

オンinherit aclsにすると、新しいファイル/ディレクトリを生成するために使用されるUnixモードは0777になります(効果的にビットsetgidを0にクリア)。

このオプションを有効にすると、unix モードが 0777 に設定され、デフォルトのディレクトリ ACL が伝播されます。

inherit acls = no明示的に並べて指定するとvfs objects = acl_xattr効果があるように見えますが、この方法で一緒に使用することは適切ではない可能性があり、不明または隠された副作用がある可能性があります。

関連情報