Samba: 特定のユーザーのサブフォルダを非表示にする

Samba: 特定のユーザーのサブフォルダを非表示にする

1 人のユーザー (または 1 人を除くすべてのユーザー) の共有パターンに一致するすべてのサブフォルダーを非表示にする方法はありますか?

には表示できても には表示されないサブディレクトリ ( と呼ぶことにします_private_data) を作成したいと思います。ただし、このディレクトリがどこにあるかは事前にわかりません。 がディレクトリを作成し、次にディレクトリ を作成する可能性があります。 'user2' にも、すべてのサブディレクトリの読み取り権限がありますが、サブディレクトリを表示できないようにする必要があります。user1user2user1ShareThis/LookHereShareThis/LookHere/_private_dataShareThis/LookHere_private_data

どうにかしてそれを行うことが可能でしょうか? 、hide filesおよびveto filesオプションはすでに見つかりましdont descendた。 これらは私が求めているものとかなり似ているように見えますが、それらを一部のユーザーにのみ割り当てる方法や、共有のサブディレクトリでそれらを一致させる方法がわかりません。

答え1

ついに解決策を見つけました。ユーザー名に基づいてファイルをインクルードすることで機能します。_priv ディレクトリの参照を許可したいユーザーごとにファイルを作成 (またはシンボリックリンク) する必要がありますが、私にとってはそれで問題ありません。

以下は、「Images」という共有の例です。

smb.conf:

[Images]
comment = Shared Images
path = /path/to/images
write list = user1, user2
valid users = user1, user2

# make sure the _priv directory cannot be accessed
hide files = /_priv/
veto files = /_priv/

# The following line allows to revert hide and veto options so that
# specific users are allowed to view private directories
include = /etc/samba/allowprivate.conf.%U

次に、ディレクトリにアクセスできるすべてのユーザーに対して、次の内容の allowprivate.conf (例: allowprivate.conf.user1) を作成します。

# This reverts the settings from smb.conf, so that this user
# can access all files
hide files =  
veto files =

これはサブディレクトリでも機能するため、「特権」ユーザーはディレクトリを作成するだけ_privで、特権のないユーザーはそのディレクトリにアクセスできなくなります。

答え2

ディレクトリは非表示にする必要があるため、他のユーザーも読み取れないようにする必要があると思います。hide unreadable基本的に、ユーザーが読み取りを許可されていないファイルとディレクトリを非表示にするパラメータを調べることをお勧めします。これは共有ごとに設定できます。

答え3

これが私の解決策です:

  1. ユーザーとグループを作成する
  2. このフォルダを表示できるのはグループuser1内のユーザーのみになります。admin
[Images]
...
hide unreadable = yes
force user = %U
force group = +smbadmin
# /path/to/images
chmod 770 _priv
chown user1:admin _priv

関連情報