🦔

【Linux】rw-r--r--の後ろにつく.や@って何だ?

に公開

ファイルの権限を確認していたら、とあることに気づいたので調べて記事にしました。

Linuxでの権限確認といえば ls -laですが、複数の環境で調べる機会があり、権限を見比べていたらあることに気づきました。

Dockerコンテナの中で確認したら

bash
ls -la
-rw-r--r--.  1 root  root   294 11 15 12:45 hoge.txt

しかしローカルのMacBookで確認すると

bash
ls -la
-rw-r--r--@  1 user  staff   294 11 15 12:45 huga.txt

ん?そういえばあんまり気にしたことなかったけど、この権限の後ろについてる.や@って何だろう?

ということで、調べた結果をまとめます。

ls -laの意味

ls コマンドは List Segment(または List Directory Contents) の略で、現在のディレクトリ内のファイル一覧を表示します。
最もよく使われるコマンドのひとつです。

-la オプションの意味は以下のとおりです:
• -l:詳細(long format)表示。権限やファイルサイズなどの情報が出る。
• -a:隠しファイル(. から始まるファイル)も含め、すべて表示。

各項目の意味

例として、以下の出力を見てみます:

bash
-rw-r--r--.  1 user  staff   294 11 15 12:45 hoge.txt

この各項目には、次のような意味があります:

項目 例 説明
ファイルタイプ+パーミッション -rw-r--r--. ファイル種別と権限+追加属性記号
ハードリンク数 1 ファイルに張られているハードリンク数
所有ユーザー user このファイルの所有者
所有グループ staff ファイルの所属グループ
サイズ 294 ファイルサイズ(バイト)
更新日時 11 15 12:45 最終更新日時
ファイル名 hoge.txt 対象ファイルの名前

本題:.や@って?

同じファイルサイズ・権限でも、以下のように末尾の記号だけが違っていました:
• . … Docker内の Linux 環境にて
• @ … macOSローカル環境にて

これらの記号には、実は次のような意味がありました👇

「.`(ドット)」:SELinux セキュリティコンテキストあり

Linux(特に CentOS / RHEL / AmazonLinux)環境では、SELinux(Security-Enhanced Linux) が有効になっている場合、ファイルにセキュリティ情報がつきます。

その印として パーミッション末尾に . が付くのです。

確認には ls -Z を使います:

bash
ls -Z hoge.txt

出力例:

bash
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 hoge.txt

「@(アットマーク)」:拡張属性(xattr)つき

@ は 拡張属性(xattr) が付いていることを示しています。
特に macOS では頻繁に使われます。

確認コマンド:

bash
xattr huga.txt

出力例:

bash
com.apple.quarantine

macOS ではインターネットからダウンロードしたファイルに quarantine 属性がついたりするため、かなりの頻度で見かける記号です。

必要であれば削除できます:

bash
xattr -d com.apple.quarantine huga.txt

SELinuxとは?より詳しい解説

SELinux(Security-Enhanced Linux) は、Linuxに追加された強力なアクセス制御機構で、アメリカ国家安全保障局(NSA)によって開発されました。

通常の UNIX の権限(所有者・グループ・その他)に加えて、**「どのプロセスが、どのリソースにアクセスできるかを細かく制御」**できます。

例えば:
• /var/www/html/index.html に apache や nginx はアクセス出来るけど、他のプロセスは読めない
• 仮に権限を777にしても、ラベルが違うとアクセス禁止されることも

SELinuxでは、すべてのファイルやプロセスに セキュリティコンテキスト(ラベル) が付与されます。

例:

bash
system_u:object_r:httpd_sys_content_t:s0  ← SELinuxのコンテキスト

これは「httpd(=ApacheやNginxなどのWebサーバプロセス)が読むことができるファイル」という意味です。

xattrとは?より詳しい解説

xattr(Extended Attributes:拡張属性) は、ファイルにメタデータを追加できる仕組みです。

普通のファイル属性(権限・所有者など)とは別に、以下のような情報をファイルシステムに追加できます:
• macOS:ダウンロードファイルには com.apple.quarantine が付く
• HFS+ や APFS:ファイルにメモやタグのようなカスタム属性を保持可能
• Linux:SELinuxやACL情報も xattr として管理されることがある

確認コマンド:

bash
xattr -l file.txt

よくある xattr の例(macOS):

属性名 説明
com.apple.quarantine インターネットからダウンロードしたファイルである印
com.apple.metadata:_kMDItemUserTags ファイルに付けたFinderのタグ名
com.apple.FinderInfo macOS Finder用の情報

他にもある末尾記号一覧

ls -la のパーミッション末尾には、. や @ 以外にもさまざまな記号が表示されることがあります。

記号 例 意味 主に見られる環境
. -rw-r--r--. SELinux のセキュリティコンテキストがある Linux(RHEL / CentOS / Amazon Linux)
@ -rw-r--r--@ 拡張属性(xattr)が付いている macOS / 一部 Linux
+ -rw-r--r--+ ACL(Access Control List)が設定されている Linux / macOS / BSD
# drwx------# NFSv4 ACL が設定されている NFS マウント環境
* -rwxr-xr-x* 拡張フラグや特別な実行属性が付いている FreeBSD / macOS の一部設定
(なし) -rw-r--r-- 特になし(通常のパーミッションのみ) 全環境

まとめ

ls -la で権限をチェックしていると、末尾に付く . や @ には意味があります。

それは、OS が持つセキュリティ機能や拡張機能による「付加情報」の存在を表している記号なのです。
• . → SELinuxコンテキスト(Linux)
• @ → 拡張属性(macOS)

一見同じ rw-r--r-- に見えても、背後に含まれるメタ情報には違いがあります。
これらを理解しておくことで、権限やセキュリティ周りのトラブルシュートがもっと楽になります。

なお、この情報が載っていないと、「アクセスできない」「動かない」問題の原因が分からないこともあるのでご注意ください。

Discussion