ようへいの日々精進XP

よかろうもん

(小ネタでごめんネ) ls コマンドのパーミッションに表示される @ って何だろうかー? 🤔

この記事は

YAMAP エンジニア Advent Calendar 2022 の第 21 日目の記事です。

qiita.com

経緯

とあるファイルを S3 バケットからダウンロードした後、たまたまターミナル上でとあるファイルをリストアップしてみたらファイルのパーミッション@ が付いていたのが気になったので調べてみたメモです。

$ ls -l とあるファイル
-rw-r--r--@ 1 user  staff  3408385 12 19 20:01 とあるファイル

この @ って何だろうかー? 🤔

尚、この記事では以下の環境で動作確認等を行っております。

$ sw_vers
ProductName:    macOS
ProductVersion: 12.6.1
BuildVersion:   21G217

man ls (man 1 ls)

まずは man してみると、ls コマンドに以下のようなオプションが利用出来ることを確認しました。

-@      Display extended attribute keys and sizes in long (-l) output.

ファイルに付与された拡張属性を表示する為のオプションのようです。

実際に @ が付いたファイルを ls -l@ してみると、以下のように表示されることを確認しました。

$ ls -l@ とあるファイル
-rw-r--r--@ 1 user  staff  3408385 12 19 20:01 とあるファイル
        com.apple.lastuseddate#PS            16
        com.apple.macl       72
        com.apple.quarantine

ということは、この @ はファイルに拡張属性が付いていることを示していることが解りました。

尚、macOS については xattr コマンド (オプション -l ) で拡張属性の詳細を確認することが出来ます。

$ xattr -l とあるファイル
com.apple.lastuseddate#PS: Dc
com.apple.macl:
com.apple.quarantine: 0083;1234567890;Safari;XXXXXXX-YYYY-ZZZZ-XXXX-ZZZZZZZZZZZZ

また、この拡張属性を削除したい場合には、以下のように実行します。

# xattr -d ${拡張属性名} ${対象となるファイル名}
$ xattr -d com.apple.lastuseddate#PS とあるファイル

拡張属性を使いたい場合には以下のように実行します。

# xattr -w ${拡張属性名} ${拡張属性値} ${対象となるファイル名}
$ xattr -w foo.bar.hoge bar とあるファイル
$ xattr -l とあるファイル
com.apple.macl:
com.apple.quarantine: 0083;1234567890;Safari;XXXXXXX-YYYY-ZZZZ-XXXX-ZZZZZZZZZZZZ
foo.bar.hoge: bar

ちなみに、拡張属性 (拡張ファイル属性) とは?

拡張ファイル属性とは、ファイルシステムが解釈しないメタデータをユーザーが付与出来るファイルシステムの一機能とのことです。

現場からは以上でした!