どこにも見つけられなかった問題に直面しました (例: samba ドキュメント)。
server1 に samba 共有があり、この共有が server2 にマウントされています。server1 の共有は へのシンボリック リンクです/var/container/db
。
問題は、このシンボリックリンクされたフォルダーを server2 から開こうとすると、パスが/var/container/db
server2 に存在するため、server2 上のローカル ファイルが表示されることです。
この問題の原因は何でしょうか、また解決策は何でしょうか?
両方のサーバーは Debian 上で実行されています。
答え1
Unix 系ホスト間でシンボリックリンクを共有する場合、共有をマウントするシステムは、独自のファイルシステムツリーに従ってシンボリックリンクを解釈します。これが Unix スタイルのシンボリックリンクの動作方法です。
サーバー1の共有にシンボリックリンクで指したいものが含まれている場合は、相対的絶対リンクではなくシンボリックリンクを使用します。
たとえば、server1 上の samba 共有が で/var
、server2 に としてマウントされており/server1var
、シンボリック リンクが server1 上に として配置されている場合/var/some/directory/link-to-db
、現在のシンボリック リンクは次のように作成されます。
server1# ln -s /var/container/db /var/some/directory/link-to-db
代わりに、次のようにすることもできます。
server1# cd /var/some/directory
server1# ln -s ../../container/db link-to-db
server1のデータベースがSamba共有内にない場合は、Sambaサーバパラメータが必要になりますwide links = yes
。これにより、server1はシンボリックリンクをたどり、/var/container/db
単にシンボリックリンクを渡すのではなく、 server1のシンボリックリンクにアクセスできるようになります。
ただし、サーバーがデフォルト設定で実行されている場合は、デフォルトで有効になっています。クライアントが Unix 系システムの場合 (この場合のように)、unix extensions = yes
無効になります。wide links
ただし、 を設定すると、共有接続で が有効な場合でもパラメータが機能するallow insecure wide links = yes
ようになります。wide links
unix extensions
ただし、これは安全ではないためお勧めできません。server1 の管理者は、何が共有され、何が共有されないかを制御できなくなります。これは、書き込み可能な共有に適切なシンボリック リンクを作成するだけで、クライアントが Samba 共有外の任意のファイルにアクセスできるようになるためです。その後は、接続で使用されるユーザー アカウントにファイルの読み取り権限があるかどうかが問題になります。
基本的に、クライアントが書き込み可能な共有は、実質的には Samba との共有と同等ですallow insecure wide links
。wide links
推奨されません。unix extensions
/