Samba がシンボリック リンクとワイド リンクを処理する方法 (「共有ルート内」または「共有ルート外」のみを区別できます) のため、共有ルートに「実際の」ディレクトリへの固定シンボリック リンクを作成し、次のように、ユーザーがネットワーク共有を参照するときに「実際の」ディレクトリが直接表示されないようにしたいと考えています。
これは可能ですか?
実際の構造 (FreeBSD ファイル サーバー):
share_root
--- data1
--- data3
--- data4
--- data5
--- data6
--- data2
--- data7
--- data8
--- data9
--- d4 (=symlink to data4)
--- d6 (=symlink to data6)
--- d9 (=symlink to data9)
ユーザーに表示される内容 (Windows クライアント):
share_root
--- d4 (and all data4's subdirs)
--- d6 (and all data6's subdirs)
--- d9 (and all data9's subdirs)
(note: actual access to any dir is controlled by ACLs on data1/data2
and their subdirs, so this just cleans up the tree seen by a user
when they browse the share; it doesn't create any security)
本質的に、「実際の」ディレクトリ data1/data2 には、ユーザーがアクセスできるディレクトリとアクセスできないディレクトリが混在しており、そのアクセスは ACL によって強制されます。
しかし、ユーザーが共有にアクセスするときには、そもそもこれらのディレクトリが表示されないようにしたいのです。
「通常の」隠しファイルは Windows エクスプローラーに表示されるため、「ファイルの非表示」やドットファイルを使用してこれを行うことはできません。 役立つ場合は、拒否ファイル、アクセス制御列挙、ACL 読み取り/トラバースなどの他の方法を使用することもできます。 ただし、data1/data2 がユーザーに直接表示されないようにしたいだけです。トラバースを強制終了したくはありません。シンボリックリンク d4/d6/d9 経由data1/data2 のサブディレクトリに。
アクセス制御列挙、smb.conf、ACL の組み合わせを使用してこれを実現できますか? できない場合、解決策に最も近づく方法は何ですか?
答え1
あなたの要求を完全に理解しているかどうかはわかりませんが、nullfs
マウントを使用するのが最初に思い浮かぶ戦術です。
物理的な実際の構造はそのままにしておきます。physical_root
この例のために呼び出します。
用に新しい空のディレクトリを作成しshare_root
、smb4.conf で Samba をそのディレクトリにポイントします。
の下にshare_root
、Samba クライアントに公開するすべてのディレクトリのマウントポイントを作成します。
for DIR in d4 d6 d9; do
mkdir /share_root/$DIR
done
次に、実際の物理ディレクトリを偽のshare_root
スペースに null マウントします。
mount_nullfs /physical_root/data1/data4 /share_root/d4
mount_nullfs /physical_root/data1/data6 /share_root/d6
mount_nullfs /physical_root/data2/data9 /share_root/d9
これらのマウントは、おそらく 'late' オプションを使用して /etc/fstab に追加できます。
/physical_root/data1/data4 /share_root/d4 nullfs rw,late 0 0
...etc...