EXTATTR(9)

名称
extattr - 仮想ファイルシステムの名前付き拡張属性

書式
<sys/param.h> <sys/vnode.h> <sys/extattr.h>

解説
名前付き拡張属性は、ファイルまたはディレクトリを表現する vnode に 追加のメタデータを関連付けることを可能にします。 この追加のデータのセマンティクスは、"name=value" ("名前=値") のペアで、 名前は定義されても定義されなくても良く、定義されていれば、0 バイト以上の 任意のバイナリデータに関連付けられます。 拡張属性の名前は名前空間の集合の中に存在します。 拡張属性上の個々の操作は、操作を参照するために名前空間を供給することが 要求されています。 複数の名前空間の中に同じ名前が存在する場合には、その名前に関連付けられた 拡張属性は、独立して格納され、操作されます。 次の 2 つの名前空間が普遍的に定義されていますが、個々のファイルシステムは 追加の名前空間を実装することが可能で、またこれら EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM の名前空間を実装しないことも可能です。 これらの属性のセマンティクスは以下を意図しています。 ユーザ属性データは、ファイルまたはディレクトリの中のデータに関連付けられた 通常の任意および必須の保護によって、保護されます。 システム属性データは、これらの属性への直接的なアクセスまたは操作には 適切な特権が要求されることによって、保護されます。

拡張属性データの読み込みは、 VOP_READ(9) の形式で、明示されたメタデータの連続した領域を返します。 一方、書込みは、 与えられた名前に関連付けられた現在の "値" 全体が置き換えられます。 拡張属性の違いを持つファイルシステムが過多にあります。 このため、これらの関数は、利用可能性および機能性は制限されるかもしれませんし、 サポートするファイルシステムの基本的なセマンティクスを意識して 使用するべきです。 拡張属性データのための権限を与える機構は、 ファイルシステムによって異なります。 これは、属性の最大の大きさや、 任意または特定の新規属性を定義可能か否かも同様です。

拡張属性は、ヌルで終端された文字列を使用して名前付けされます。 名前は大文字と小文字を区別するかもしれませんし、しないかもしれませんが、 これは潜在的なファイルシステムのセマンティクスに依存します。 適切な vnode 拡張属性の呼び出しは、 VOP_GETEXTATTR(9) および VOP_SETEXTATTR(9) です。

関連項目
VFS(9), VFS_EXTATTRCTL(9), VOP_GETEXTATTR(9), VOP_SETEXTATTR(9)

作者
このマニュアルページは Robert Watson が書きました。

バグ
現在は拡張属性アクセスインタフェースは、属性のトータルの大きさを返せないか、 呼び出し側によって提供されたバッファ空間が全ての利用可能なデータを保持する ためには不足であることを示します。 加えて、このインタフェースは現在の利用可能な属性の組を取り出す仕組みを 提供していません。既に、 NULL の属性名を与えることで、渡されたファイルまたはディレクトリのための 定義された属性のリストをもたらすべきであると提案されていますが、 現在は実装されていません。