web-dev-qa-db-ja.com

sambaで拡張属性を使用する

私はSambaサーバーとMacとWindowsのクライアントを組み合わせています。それらのクライアントには、Sambaサーバー上のファイルのフルパスを知る必要があるアプリケーションがあります。 sambaサーバーには、拡張属性を処理できるvfs_fruitとvfs_streams_xattrを使用しています。

どういうわけか、ファイルの実際のパスを拡張属性としてSambaサーバーに配置し、クライアントにその拡張属性を読み取らせることができるかどうか疑問に思っています。

Sambaのソースコードを変更してこれを実装しようとしましたが、役に立ちませんでした。いくつかの助けをいただければ幸いです。

2
Brexiteer

なぜそれをしたいかはわかりませんが、ファイルのサーバーのフルパスを「NTFS代替データストリーム」に保存して、Sambaクライアントが読み取ることができます。 Sambaは、拡張属性として保存することにより、NTFS代替データストリームを「偽造」します。

データは単なるパスなので、streams_xattrで問題ありません。 https://www.samba.org/samba/docs/man/manpages/vfs_streams_xattr.8.html にあるように、拡張属性はuser.DosStream."ADS-NAME"と呼ばれる必要があります。

setfattrを使用して既存のファイルに属性を定期的に追加するスクリプトを作成するのは簡単です。

「リアルタイム」で作成するにはもっと複雑ですが、Sambaのソースコードを変更する必要はありません。ファイルの作成/移動時に拡張属性を作成/変更するスクリプトを実行するだけです。そのためにincronを見てください。 https://stackoverflow.com/questions/14692353/executing-a-bash-script-upon-file-creation に例があります。

1
Sacha K