「拡張属性」の版間の差分
細 (→他のタグ付けシステム: リンクを修正) |
(他言語へのリンクを追加) |
||
1行目: | 1行目: | ||
[[Category:ファイルシステム]] |
[[Category:ファイルシステム]] |
||
[[en:Extended attributes]] |
[[en:Extended attributes]] |
||
+ | [[ru:Extended attributes]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ファイルのパーミッションと属性}} |
{{Related|ファイルのパーミッションと属性}} |
2023年11月1日 (水) 03:06時点における版
関連記事
xattr(7) から: "拡張属性は、ファイルやディレクトリと永続的に関連付けられた名前:値のペアです。" 拡張属性には4つのクラスがあります: security、system、trusted、そして user です。
拡張属性は、ケイパビリティを設定する際にも用いられます。
ユーザ拡張属性
ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには:
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" file.txt
拡張属性を表示するには getfattr を使用してください:
$ getfattr -e text -d file.txt
# file: file.txt user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb"
拡張属性を削除するには:
$ setfattr -x user.checksum file.txt
特定の拡張属性を持つファイルを見つけるには、rawhideAUR を使ってください:
$ rh /path/to/dir '"XATTR_REGEX".reea'
一部のユーザ拡張属性には以下が含まれています:
user.mime_type
: プログラムに mimetype を知らせ、推測しなくても良くします。user.charset
: Apache httpd モジュール mod_mime_xattr によって使用されます。user.creator
: そのファイルを作成したアプリケーションの名前。
XDG は、プログラムによって使用される標準化された拡張属性のセットも提案しています:
user.xdg.comment
: Dolphin などのファイルマネージャによってサポートされます。user.xdg.origin.url
: URL からダウンロードしたファイル用。user.xdg.robots.index
: ファイルがインデックスに含まれるならば "true"。さもなくば "false"。user.xdg.robots.backup
: ファイルがバックアップに含まれるならば "true"。さもなくば "false"。user.xdg.language
user.xdg.creator
user.xdg.publisher
user.xdg.origin.email.subject
user.xdg.origin.email.from
user.xdg.origin.email.message-id
拡張属性を保持する
コマンド | デフォルトで保持するか/必要なフラグ |
---|---|
cp |
--archive /--preserve=all /--preserve=xattr
|
mv |
Yes1 |
tar |
作成時には --xattrs 、展開時には --xattrs-include='*'
|
bsdtar |
展開時に -p
|
rsync | -X, --xattrs
|
cpio | No |
gzip | No |
pax | No |
syncthing | syncXattrs を有効化する必要あり |
- mv は、対象のファイルシステムが拡張属性をサポートしていない場合、何も言わずに拡張属性を破棄します。
テキストエディタで拡張属性を保持するには、保存時に rename(2) を使わずファイルを切り詰める/拡張する (truncate) するように設定する必要があります。[1]
サポート
ファイルシステム
Ext4、Btrfs、ZFS、XFS などの主要な Linux ファイルシステムの全てで拡張属性がサポートされています。カーネルは、拡張属性の名前は 255 バイトまで、値は 64 KiB まで許可しています。しかし、Ext4 と Btrfs では、拡張属性を "ファイルシステムブロック" 内に収める必要があることから、より小さい制限が課されるかもしれません。
NTFS は代替データストリーム (Alternative Data Streams) を使って user を保存します。マウントオプションの user_xattr
か streams_interface=xattr
がデフォルトで使用されるはずです。しかし、マウントオプション streams_interface=windows
が使用されている場合は、拡張属性はサポートされないかもしれません。ntfs-3g は、FUSE 内での代替データストリームの拡張属性へのマッピングをサポートしています。
NFS は現在、拡張属性をサポートしていません。
ソフトウェア
アプリケーション | サポートされている拡張属性 | 備考 |
---|---|---|
baloo | user.xdg.tags user.baloo.rating |
|
caja | Yes | 拡張機能 caja-xattr-tags と caja.eiciel によってサポートされています。 |
Chromium | No | referrer と url をサポートしていましたが、プライバシーとセキュリティの理由により無効化されました。CVE-2018-20483 も参照してください。 |
brave | No | |
CURL | user.xdg.origin.url user.xdg.referrer.url |
--xattrs フラグで有効化されます。
|
dolphin | user.baloo.rating user.xdg.comment user.xdg.tags |
[2] |
Dropbox | user.com.dropbox.attributes
|
|
emacs-vm | No | mbox 拡張属性はリセットされます。 |
Epiphany | No | |
Exiftool | No | |
fd | No | |
find | No | |
Firefox | No | |
gallery-dlAUR | No | |
Gwenview | user.xdg.tags
|
|
kfind | No | |
konqueror | No | |
kio | [3] | |
Nautilus | No | |
recoll | user.xdg.tags
|
|
tagspacesAUR | No | |
tmsuAUR | No | |
Thunar | No | |
youtube-dl, yt-dlp | user.xdg.referrer.url user.dublincore.title user.dublincore.date user.dublincore.description user.dublincore.contributor user.dublincore.format |
--xattrs フラグで有効化されます。
|
Wget | user.xdg.origin.url user.xdg.referrer.url |
--xattrs フラグで有効化されます。
|
Webkit | No |
他のタグ付けシステム
ファイルシステムやソフトウェアによるサポート不足により、拡張属性が使えない場合もあります。そのような理由により多くのメディアフォーマットは、Exiftool などのプログラムや音声用の id3AUR といったより固有のプログラムを使って読み取ることのできるファイル形式でメタデータを保存します。
- 全種類のファイル: Exiftool
- 音声: オーディオタグエディタ
- 動画: ffprobe
gvfs
ファイルシステムに依らないもう一つの回避策は Gnome 仮想ファイルシステム gvfs です。これは、メタデータ (gvfsd メタデータ) を保存するために使用されます。例えば、Firefox はこの方法でメタデータを保存しており、以下のコマンドで確認できます:
$ gio info --attributes=metadata:: downloaded.html
このアプローチをとっている他のプログラムとしては以下があります:
- Thunar: ファイルのカラーハイライトを保存するために使用しています。