共有ディレクトリを持つファイルサーバーを設定しています。内部には、すべてのユーザーが読み取ることができるユーザー固有のフォルダーと、すべてのユーザーが読み書きできる共有ディレクトリがあります。ユーザー固有のフォルダは非常に簡単です。しかし、共有フォルダにはいくつかの問題があります。 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 = yes
。inherit 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 acls
smb.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
効果があるように見えますが、この方法で一緒に使用することは適切ではない可能性があり、不明または隠された副作用がある可能性があります。