「拡張属性」の版間の差分
同期 |
同期 |
||
| 16行目: | 16行目: | ||
ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには: |
ユーザ拡張属性は、ファイルに関する任意の情報を保存するために使用できます。属性を作成するには: |
||
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" |
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" file.txt |
||
拡張属性を表示するには getfattr を使用してください: |
拡張属性を表示するには getfattr を使用してください: |
||
{{hc|$ getfattr -d |
{{hc|$ getfattr -e text -d file.txt|2= |
||
# file: |
# file: file.txt |
||
user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb" |
user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb" |
||
}} |
}} |
||
| 27行目: | 27行目: | ||
拡張属性を削除するには: |
拡張属性を削除するには: |
||
$ setfattr -x user.checksum |
$ 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= |
| {{ic|cp}} || {{ic|--archive}}/{{ic|1=--preserve=all}}/{{ic|1=--preserve=xattr}} |
||
|- |
|- |
||
| {{ic|mv}} || {{ |
| {{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}} |
||
| {{ |
| {{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:// |
| {{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- |
{{TranslationStatus|Extended attributes|2023-08-30|786413}} |
||
2023年8月30日 (水) 21:09時点における版
関連記事
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.languageuser.xdg.creatoruser.xdg.publisheruser.xdg.origin.email.subjectuser.xdg.origin.email.fromuser.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
- 音声: Audio tag editors
- 動画: ffprobe
gvfs
ファイルシステムに依らないもう一つの回避策は Gnome 仮想ファイルシステム gvfs です。これは、メタデータ (gvfsd メタデータ) を保存するために使用されます。例えば、Firefox はこの方法でメタデータを保存しており、以下のコマンドで確認できます:
$ gio info --attributes=metadata:: downloaded.html
このアプローチをとっている他のプログラムとしては以下があります:
- Thunar: ファイルのカラーハイライトを保存するために使用しています。
参照
- XDG の拡張属性のガイドライン
- Wikipedia:ja:拡張ファイル属性#Linux
- Extended attributes: the good, the not so good, the bad.