コンテンツにスキップ

「拡張属性」の版間の差分

提供: ArchWiki
削除された内容 追加された内容
AshMyzk (トーク | 投稿記録)
同期
AshMyzk (トーク | 投稿記録)
同期
16行目: 16行目:
ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには:
ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには:


$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" file.txt


拡張属性を表示するには getfattr を使用してください:
拡張属性を表示するには getfattr を使用してください:


{{hc|$ getfattr -d foo.txt|2=
{{hc|$ getfattr -e text -d file.txt|2=
# file: foo.txt
# file: file.txt
user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb"
user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb"
}}
}}
27行目: 27行目:
拡張属性を削除するには:
拡張属性を削除するには:


$ setfattr -x user.checksum foo.txt
$ setfattr -x user.checksum file.txt

特定の拡張属性を持つファイルを見つけるには、{{AUR|rawhide}} を使ってください:

$ rh ''/path/to/dir'' '"''XATTR_REGEX''".reea'


一部のユーザ拡張属性には以下が含まれています:
一部のユーザ拡張属性には以下が含まれています:
51行目: 55行目:


{| class="wikitable"
{| class="wikitable"
! コマンド || 必要なフラグ
! コマンド || デフォルトで保持するか/必要なフラグ
|-
|-
| {{ic|cp}} || {{ic|1=--preserve=mode,ownership,timestamps,xattr}}
| {{ic|cp}} || {{ic|--archive}}/{{ic|1=--preserve=all}}/{{ic|1=--preserve=xattr}}
|-
|-
| {{ic|mv}} || {{Y|デフォルトで保持<sup>1}}
| {{ic|mv}} || {{Yes}}<sup>1</sup>
|-
|-
| {{ic|tar}} || 作成時には {{ic|--xattrs}}、展開時には {{ic|1=--xattrs-include='*'}}
| {{ic|tar}} || 作成時には {{ic|--xattrs}}、展開時には {{ic|1=--xattrs-include='*'}}
68行目: 72行目:
|-
|-
| {{pkg|pax}} || {{No}}
| {{pkg|pax}} || {{No}}
|-
| [[syncthing]] || [https://docs.syncthing.net/advanced/folder-sync-xattrs syncXattrs] を有効化する必要あり
|}
|}


84行目: 90行目:
[[NFS]] は現在、拡張属性をサポートしていません。
[[NFS]] は現在、拡張属性をサポートしていません。


=== ファイルマネージャ ===
=== トウェア ===

説明:

# 保持: コピーや移動をした時に拡張属性が保持されるか。
# Tags: Tags 拡張属性がサポートされているか。

{| class="wikitable"
! ファイルマネージャ
! 保持
! Tags
|-
| [[dolphin]]
| {{No}}
|
|-
| [[thunar]]
| {{Yes}}
|
|-
| {{pkg|caja}}
|
| {{Yes}}<sup>1
|-
| [[nautilus]]
|
|
|}

# caja: 拡張機能の caja-xattr-tags と caja.eiciel によってサポートされています。

=== プログラム ===


{| class="wikitable"
{| class="wikitable"
! アプリケーション
! アプリケーション
! サポートされている拡張属性
! サポートされている拡張属性
! いつから
! 備考
! 備考
|-
|-
| {{pkg|baloo}}
| {{pkg|baloo}}
| {{ic|user.xdg.tags}}
| {{bc|
user.xdg.tags
|
user.baloo.rating
}}
|
|
|-
| {{pkg|caja}}
| {{Yes}}
| 拡張機能 caja-xattr-tags と caja.eiciel によってサポートされています。
|-
|-
| [[Chromium]]
| [[Chromium]]
| {{No|1=https://chromium.googlesource.com/chromium/src/+/a9b4fb70b4318b220deee0da7b1693d16b8ed071}}
| {{ic|user.xdg.origin}},{{ic|user.xdg.referrer}}
| referrer と url をサポートしていましたが、プライバシーとセキュリティの理由により無効化されました。[https://cve.circl.lu/cve/CVE-2018-20483 CVE-2018-20483] も参照してください。
|
|-
| {{pkg|brave}}
| {{No|1=https://github.com/brave/brave-browser/issues/2766}}
|
|
|-
|-
| [[CURL]]
| [[CURL]]
|
| {{bc|
user.xdg.origin.url
|
user.xdg.referrer.url
|
}}
| {{ic|--xattrs}} フラグで有効化されます。
|-
| [[dolphin]]
| {{bc|
user.baloo.rating
user.xdg.comment
user.xdg.tags
}}
| [https://bugs.kde.org/show_bug.cgi?id=473808]
|-
|-
| [[Dropbox]]
| [[Dropbox]]
| {{ic|user.com.dropbox.attributes}}
| {{ic|user.com.dropbox.attributes}}
|
|
|
|-
|-
| [[emacs|emacs-vm]]
| [[emacs|emacs-vm]]
| {{No}}
| {{No}}
| mbox 拡張属性はリセットされます。
|
|-
| mbox 拡張属性をリセットします。
| [[Epiphany]]
| {{No|1=https://gitlab.gnome.org/GNOME/epiphany/-/issues/2165}}
|
|-
| [[Exiftool]]
| {{No|1=https://exiftool.org/forum/index.php?topic=12762}}
|
|-
| {{pkg|fd}}
| {{No|1=https://github.com/sharkdp/fd/issues/830}}
|
|-
| {{pkg|find}}
| {{No|1=https://savannah.gnu.org/bugs/?64605}}
|
|-
| [[Firefox]]
| {{No|1=https://bugzilla.mozilla.org/show_bug.cgi?id=665531}}
|
|-
| {{AUR|gallery-dl}}
| {{No|1=https://github.com/mikf/gallery-dl/issues/4472}}
|
|-
|-
| [[Gwenview]]
| [[Gwenview]]
| {{ic|user.xdg.tags}}
| {{ic|user.xdg.tags}}
|
|
|
|-
| {{pkg|kfind}}
| {{No|1=https://bugs.kde.org/show_bug.cgi?id=473864}}
|
|-
| {{pkg|konqueror}}
| {{No|1=https://bugs.kde.org/show_bug.cgi?id=473809}}
|
|-
| kio
| [https://bugs.kde.org/show_bug.cgi?id=116617]
|
|-
| [[Nautilus]]
| {{No|1=https://discourse.gnome.org/t/16892}}
|
|-
|-
| {{pkg|recoll}}
| {{pkg|recoll}}
| {{ic|user.xdg.tags}}
| {{ic|user.xdg.tags}}
|
|
|-
| {{AUR|tagspaces}}
| {{No|1=https://trello.com/c/iapsXZZe/64-option-to-store-tags-in-file-using-extended-attributes-xattr}}
|
|
|-
|-
| {{AUR|tmsu}}
| {{AUR|tmsu}}
| {{No|1=https://github.com/oniony/TMSU/issues/10}}
| {{No|1=https://github.com/oniony/TMSU/issues/10}}
|
|
|
|-
|-
| [[Thunar]]
| {{AUR|tagspaces}}
| {{No|1=https://trello.com/c/iapsXZZe/64-option-to-store-tags-in-file-using-extended-attributes-xattr}}
| {{No|1=https://gitlab.xfce.org/xfce/thunar/-/issues/1195}}
|
|
|
|-
| {{pkg|youtube-dl}}, [[yt-dlp]]
| {{bc|
user.xdg.referrer.url
user.dublincore.title
user.dublincore.date
user.dublincore.description
user.dublincore.contributor
user.dublincore.format
}}
| {{ic|--xattrs}} フラグで有効化されます。
|-
|-
| [[Wget]]
| [[Wget]]
|
| {{bc|
user.xdg.origin.url
|
user.xdg.referrer.url
|
}}
| {{ic|--xattrs}} フラグで有効化されます。
|-
| Webkit
| {{No|1=https://bugs.webkit.org/show_bug.cgi?id=260778}}
|
|}
|}

== 他のタグ付けシステム ==

ファイルシステムやソフトウェアによるサポート不足により、拡張属性が使えない場合もあります。そのような理由により多くのメディアフォーマットは、[[Exiftool]] などのプログラムや音声用の {{AUR|id3}} といったより固有のプログラムを使って読み取ることのできるファイル形式でメタデータを保存します。

* 全種類のファイル: [[Exiftool]]
* 音声: [https://wiki.archlinux.org/title/List_of_applications/Multimedia#Audio_tag_editors Audio tag editors]
* 動画: {{pkg|ffprobe}}

=== gvfs ===

ファイルシステムに依らないもう一つの回避策は Gnome 仮想ファイルシステム {{pkg|gvfs}} です。これは、メタデータ (gvfsd メタデータ) を保存するために使用されます。例えば、Firefox はこの方法で[https://hg.mozilla.org/mozilla-central/file/tip/toolkit/components/downloads/DownloadPlatform.cpp メタデータを保存]しており、以下のコマンドで確認できます:

$ gio info --attributes=metadata:: ''downloaded.html''

このアプローチをとっている他のプログラムとしては以下があります:

* [[Thunar]]: ファイルのカラーハイライトを保存するために使用しています。


== 参照 ==
== 参照 ==
180行目: 246行目:
* [https://www.lesbonscomptes.com/pages/extattrs.html Extended attributes: the good, the not so good, the bad.]
* [https://www.lesbonscomptes.com/pages/extattrs.html Extended attributes: the good, the not so good, the bad.]


{{TranslationStatus|Extended attributes|2023-08-12|785255}}
{{TranslationStatus|Extended attributes|2023-08-30|786413}}

2023年8月30日 (水) 21:09時点における版

xattr(7) から: "拡張属性は、ファイルやディレクトリと永続的に関連付けられた名前:値のペアです。" 拡張属性には4つのクラスがあります: security、system、trusted、そして user です。

警告 デフォルトでは、拡張属性は cprsync、そして他の似たようなプログラムによって保持されません。#拡張属性を保持する を見てください。

拡張属性は、ケイパビリティを設定する際にも用いられます。

ユーザ拡張属性

ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには:

$ 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 を有効化する必要あり
  1. mv は、対象のファイルシステムが拡張属性をサポートしていない場合、何も言わずに拡張属性を破棄します。

テキストエディタで拡張属性を保持するには、保存時に rename(2) を使わずファイルを切り詰める/拡張する (truncate) するように設定する必要があります。[1]

サポート

ファイルシステム

Ext4BtrfsZFSXFS などの主要な Linux ファイルシステムの全てで拡張属性がサポートされています。カーネルは、拡張属性の名前は 255 バイトまで、値は 64 KiB まで許可しています。しかし、Ext4Btrfs では、拡張属性を "ファイルシステムブロック" 内に収める必要があることから、より小さい制限が課されるかもしれません。

NTFS は代替データストリーム (Alternative Data Streams) を使って user を保存します。マウントオプションの user_xattrstreams_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 といったより固有のプログラムを使って読み取ることのできるファイル形式でメタデータを保存します。

gvfs

ファイルシステムに依らないもう一つの回避策は Gnome 仮想ファイルシステム gvfs です。これは、メタデータ (gvfsd メタデータ) を保存するために使用されます。例えば、Firefox はこの方法でメタデータを保存しており、以下のコマンドで確認できます:

$ gio info --attributes=metadata:: downloaded.html

このアプローチをとっている他のプログラムとしては以下があります:

  • Thunar: ファイルのカラーハイライトを保存するために使用しています。

参照

翻訳ステータス: このページは en:Extended attributes の翻訳バージョンです。最後の翻訳日は 2023-08-30 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。