ls -lの読み方(パーミッション・所有者・サイズを解説)

ls -lの出力行を貼り付けると、ファイル種別・所有者/グループ/その他のrwx権限・setuid/setgid/stickyビット・リンク数・サイズ(人間可読換算)・日時・ファイル名を日本語で解説し、8進数のパーミッションにも変換します。

「total 24」のような集計行や、形式に一致しない行はスキップされます(エラーにはなりません)。処理はすべてブラウザ内で行われます。

使い方

  1. ターミナルで ls -l (または ls -la ls -lh)を実行した出力をそのまま貼り付ける。複数行まとめて解析でき、total 24 のような集計行は自動的にスキップされる。
  2. 各行ごとに、ファイル種別・所有者/グループ/その他のパーミッション・特殊ビット・8進数表記・リンク数・所有者/グループ名・サイズ(人間可読換算)・日時・ファイル名(シンボリックリンクは矢印でリンク先も)を表示する。
  3. -rwxr-xr-x のようなパーミッション文字列だけを貼り付けても、種別・権限・8進数の解説だけを表示する。

仕組み・根拠

ls -l の各行は、ls(1) のマニュアルおよびPOSIXの stat 構造体が定義する情報(ファイル種別、パーミッションビット、ハードリンク数、所有者UID/GID、サイズ、更新日時、名前)にほぼ対応しています。パーミッション文字列は10文字で構成され、1文字目がファイル種別(-通常ファイル、dディレクトリ、lシンボリックリンクなど)、続く9文字が「所有者・グループ・その他」それぞれの読み取り(r)・書き込み(w)・実行(x)を3文字ずつ表します。各グループの実行ビット位置に現れるs(小文字)は setuid/setgid が実行権とともに有効であることを、S(大文字)は setuid/setgid は設定されているが実行権が無いことを示します(その他の位置のt/Tはsticky bitについて同様)。8進数表記は、r=4・w=2・x=1の合計を所有者・グループ・その他の順に並べたもので、setuid=4・setgid=2・sticky=1を加算した値が4桁目(先頭)になります。これは chmod コマンドで使われているのと同じ数値表現です。

現場の落とし穴:sticky bitが付いたディレクトリ(/tmp など、パーミッション末尾が t)は、「そのディレクトリ内のファイルを誰でも作成できるが、他人が作ったファイルは所有者以外削除できない」という意味であり、ディレクトリ自体への書き込み権限の話と混同しやすい落とし穴です。また、setuid/setgidが付いた実行ファイル(sが実行ビット位置にある)は、実行時にファイル所有者やグループの権限で動作するため、rootが所有する場合は権限昇格のリスクになり得ます。find / -perm -4000 のような棚卸しで、意図しないsetuidファイルがないか定期的に確認することが推奨されます。日時の書式はロケールや ls の実装(GNU coreutils / BSD)によって「月 日 時刻」「月 日 年」「ISO 8601形式」などが混在するため、このツールも複数のパターンを試して判読しますが、判読できない場合はその旨を表示します。

よくある質問

Q. サイズの単位(KiB/MiBなど)はどの基準ですか?

A. 1024バイトを1単位とする2進接頭辞(KiB/MiB/GiB…)で換算しています。ls -lh の多くの実装もこの基準(一部のGNU実装ではSI接頭辞オプションもあります)に準拠しています。

Q. パーミッション末尾に . や + が付いているのはなぜですか?

A. . はSELinuxのセキュリティコンテキストが設定されていることを、+ は通常のUNIXパーミッションに加えてACL(アクセス制御リスト)が追加設定されていることを示す拡張表記です(@ はmacOSの拡張属性)。このツールも検出して注記します。

Q. ファイル名にスペースが含まれている場合も正しく読み取れますか?

A. 日時部分を認識できた行であれば、それ以降をすべてファイル名として扱うため、スペースを含むファイル名にも対応します。ただし、日時の書式が認識できなかった場合はファイル名の切り出し位置がずれることがあります。

関連ツール

最終更新・根拠の確認日: 2026-09-10 · カテゴリ: Linux・サーバー