2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

2
Posted at

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

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

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

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?