1人(または1人を除くすべて)のユーザーのパターンに一致する共有内のすべてのサブフォルダーを非表示にする方法はありますか?
_private_data
には表示され、user1
には表示されないサブディレクトリ(user2
と呼びましょう)が欲しいのですが。しかし、私はこのディレクトリがどこにあるかを事前に知ることができません。 user1
がディレクトリShareThis/LookHere
を作成してから、ディレクトリShareThis/LookHere/_private_data
を作成する可能性があります。 'user2'は、ShareThis/LookHere
およびすべてのサブディレクトリを読み取る権限も持っていますが、_private_data
サブディレクトリを表示できないはずです。
どういうわけかそれは可能ですか? hide files
、veto files
、およびdont descend
オプションはすでに見つかりました。これは私が望むものと非常によく似ていますが、それらを一部のユーザーにのみ割り当てる方法と、共有の任意のサブディレクトリでそれらを一致させる方法がわかりません。
ついに私は解決策を見つけました。これは、ユーザー名に基づいてファイルを含めることによって機能します。 _privディレクトリの閲覧を許可するすべてのユーザーに対してファイルを作成(またはsymlink)する必要がありますが、私にはそれで問題ありません。
以下は、「画像」と呼ばれる共有の例です。
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
ディレクトリを作成するだけで、非特権ユーザーはそのディレクトリにアクセスできません。
ディレクトリは非表示にする必要があるため、他のユーザーが読み取れないようにする必要があると思います。ユーザーが読み取ることを許可されていないファイルとディレクトリを本質的に非表示にするパラメータhide unreadable
を調べることをお勧めします。これは1株当たりで設定できます。