Linuxのパーミッション入門|ls -l の rwx を読めるようにする【初心者向け】

前の記事で ls /root を打ったとき、「Permission denied」と断られました。Linux では、ファイルやディレクトリごとに「誰が、何をしてよいか」が決まっています。これをパーミッション(権限)と呼びます。

ls -l を打つと、左はしに -rw-r--r-- のような暗号みたいな文字が出ますよね。私は長いあいだ、ここを読み飛ばしていました。でも、自分で書いた Python のスクリプトが「Permission denied」で動かなかったとき、原因はまさにこの文字の中に書いてあったんです。

この記事では、この暗号のような文字を、声に出して読めるようになるところまで、一緒に練習しましょう。直し方(chmod・chown)は、次の記事で扱います。

💡
この記事でわかること
  • ls -l の左はしの文字(-rw-r--r-- など)の読み方
  • r(読む)・w(書く)・x(実行する)の意味
  • 「持ち主」「グループ」「その他の人」の3つの区分
  • 644・755 のような数字での書き方
  • ファイルとディレクトリで、r・w・x の意味が少し違うこと
🔰
この記事の前提
  • ls・cd・mkdir・touch・echo が使える
  • /home・/etc などのディレクトリの役割をざっくり知っている

まだの方は、前の記事「Linuxのフォルダ構成|/etc・/home・/var・/usrの役割とリンク」から読むのがおすすめです。

💡
用語メモ
  • root:Linux の管理者ユーザー(ユーザー番号 0)。何でもできるので、ふだんの作業では使いません。いちばん上のディレクトリ「/(ルート)」とは別のものです
  • ディレクトリ:フォルダのこと
  • スクリプト:やりたい処理を順番に書いておき、まとめて実行できるファイル(小さなプログラム)

用語で迷ったら、連載のまとめ記事の「よく出てくる用語ミニ辞典」でも確かめられます。


結論:10文字を「1+3+3+3」に分けて読む

ls -l の左はしの10文字は、次のように区切って読みます。

  • 1
  • 2
  • 3
  • 4
  • 5
-   rw-   r--   r--
│   │     │     └─ その他の人(others)ができること
│   │     └─────── グループ(group)ができること
│   └───────────── 持ち主(user / owner)ができること
└───────────────── 種類(- はファイル、d はディレクトリ、l はリンク)

文字 意味 ファイルの場合 ディレクトリの場合
r read(読む) 中身を読める 中の一覧を見られる(ls)
w write(書く) 中身を書き換えられる 中にファイルを作る・消す・名前を変えられる
x execute(実行) プログラムとして実行できる 中に入れる(cd)
- なし その権限がない その権限がない

パーミッション10文字の読み方

準備:練習用のファイルを用意する

練習は ~/linux-practice/perm-test の中で行います。

  • 1
  • 2
  • 3
  • 4
  • 5
mkdir -p ~/linux-practice/perm-test
cd ~/linux-practice/perm-test
echo "権限の練習" > memo.txt
mkdir box
ls -l

🖥️
この記事の出力例について

ここから先の出力例は、Debian 13での実行例です(ユーザー名 kaito・パソコン名 demo のダミー環境)。UbuntuやWSL(=Windows の中で Linux を動かせる、Microsoft のしくみ)では、表示が少し違うことがあります。

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
kaito@demo:~/linux-practice/link-test$ mkdir -p ~/linux-practice/perm-test
kaito@demo:~/linux-practice/link-test$ cd ~/linux-practice/perm-test
kaito@demo:~/linux-practice/perm-test$ echo "権限の練習" > memo.txt
kaito@demo:~/linux-practice/perm-test$ mkdir box
kaito@demo:~/linux-practice/perm-test$ ls -l
total 8
drwxrwxr-x 2 kaito kaito 4096 Nov  1 05:24 box
-rw-rw-r-- 1 kaito kaito   16 Nov  1 05:24 memo.txt

Debian 13での実行画面

💡
今回の環境では、グループにも w が付きました

今回の Debian 13 では、新しく作った memo.txt が -rw-rw-r--(664)、box が drwxrwxr-x(775)になりました。多くの手順書で見かける -rw-r--r--(644)・drwxr-xr-x(755)より、グループの w がひとつ多い形です。これは、新しいファイルの権限を決める umask という設定が 002 になっているためです(ユーザーと同じ名前の個人グループがある環境で、こう設定されていることがあります)。環境によってはグループに w が付かないので、ご自分の画面と違っても心配いりません。


ls -l の1行を、左から読んでみる

ls -l の1行には、権限のほかにもいろいろな情報が並んでいます。左から順番に見ていきましょう(数字や日時は、環境によって違います)。

位置 例 意味
1列目 -rw-r--r-- 種類と権限(この記事の主役)
2列目 1 リンクの数(今は気にしなくてOK)
3列目 kaito 持ち主(ユーザー)
4列目 kaito グループ
5列目 数字 サイズ(バイト)
6〜8列目 日付と時刻 最後に書き換えた日時
最後 memo.txt 名前

3列目と4列目に、同じ kaito が並んでいるのが不思議に見えるかもしれません。Debian や Ubuntu では、ユーザーを作ると、同じ名前のグループも一緒に作られることが多いんです。ユーザーとグループの話は、この Lv2 の別の記事でくわしく扱います。


memo.txt の権限を読んでみる

たとえば、memo.txt の左はしが -rw-r--r-- だった場合は、こう読みます。

区切り 文字 読み方
種類 - ふつうのファイル
持ち主(kaito) rw- 読める・書ける・実行はできない
グループ(kaito) r-- 読めるだけ
その他の人 r-- 読めるだけ

つまり「kaito は読み書きできて、ほかの人は読むだけ」という意味です。ふつうのファイルは、だいたいこの形になっています。

ご自分の画面の memo.txt と box の行も、同じように読んでみてください。今回の Debian 13 の memo.txt は -rw-rw-r-- だったので、「kaito と kaito グループは読み書きできて、その他の人は読むだけ」になります。box は先頭が d(ディレクトリ)で、x がついているはずです。


数字で書く権限:644 と 755

権限は、r・w・x を数字の足し算で表すこともあります。手順書では、こちらの書き方もよく出てきます。

文字 数字
r 4
w 2
x 1
- 0

3つずつ足して、持ち主・グループ・その他の順に並べます。

文字 計算 数字 よく使う場面
rw-r--r-- 4+2 / 4 / 4 644 ふつうのファイル
rwxr-xr-x 4+2+1 / 4+1 / 4+1 755 ディレクトリ、実行するスクリプト
rw------- 4+2 / 0 / 0 600 自分だけが読み書きするファイル(鍵や設定など)
rwx------ 4+2+1 / 0 / 0 700 自分だけが入れるディレクトリ

数字の権限の計算

stat というコマンドを使うと、数字の形でも確認できます。

  • 1
stat -c "%A %a %U %G %n" memo.txt box

(例)

  • 1
  • 2
-rw-rw-r-- 664 kaito kaito memo.txt
drwxrwxr-x 775 kaito kaito box

今回の環境では、上で見たとおり 664・775 と表示されました(環境によっては 644・755 です)。

%A が文字の権限、%a が数字の権限です。ちょっと長いコマンドなので、コピーして使ってくださいね。


システムのファイルの権限を見てみる

自分のファイル以外も見てみましょう。ユーザーの一覧が書かれた /etc/passwd と、パスワードの情報(暗号化されたもの)が入った /etc/shadow を比べます。見るのは権限だけで、中身は開きません。

  • 1
ls -l /etc/passwd /etc/shadow

(例)

  • 1
  • 2
-rw-r--r-- 1 root root   1226 Nov  1 02:09 /etc/passwd
-rw-r----- 1 root shadow  711 Nov  1 02:09 /etc/shadow

/etc/passwd は「その他の人」にも r がついていて、誰でも読めます。一方、/etc/shadow は「その他の人」が --- になっていて、ふつうのユーザーは読めません(読めるのは、持ち主の root と、shadow グループだけです)。大事な情報ほど、権限がしぼられているのがわかりますね。

  • 1
cat /etc/shadow

(例)

  • 1
cat: /etc/shadow: Permission denied

ここで「Permission denied」と出れば正常です。無理に読もうとする必要はありません。

前の記事で見た /tmp は drwxrwxrwt のように、いちばん最後が x ではなく t になっています。この t は、その他の人の x の位置に重ねて表示される特別な印(スティッキービット)で、「誰でもファイルを置けるけれど、消したり名前を変えたりできるのは自分のファイルだけ」という意味です。


ディレクトリの r と x を体験する

ディレクトリの権限は、ファイルと少し意味が違います。練習用の box で、「中に入れない」状態を体験してみましょう。権限を変える chmod は次の記事でくわしく説明するので、ここではコピーして打つだけで大丈夫です。

  • 1
  • 2
  • 3
  • 4
  • 5
cd ~/linux-practice/perm-test
echo "箱の中身" > box/inside.txt
chmod u-x box
ls -l
cd box

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
kaito@demo:~/linux-practice/perm-test$ cd ~/linux-practice/perm-test
kaito@demo:~/linux-practice/perm-test$ echo "箱の中身" > box/inside.txt
kaito@demo:~/linux-practice/perm-test$ chmod u-x box
kaito@demo:~/linux-practice/perm-test$ ls -l
total 8
drw-rwxr-x 2 kaito kaito 4096 Nov  1 05:24 box
-rw-rw-r-- 1 kaito kaito   16 Nov  1 05:24 memo.txt
kaito@demo:~/linux-practice/perm-test$ cd box
-bash: cd: box: Permission denied

今回の環境では、box が drw-rwxr-x になりました(持ち主の3文字が rwx から rw- に変わっています)。そして cd box は「Permission denied」で断られました。

持ち主の x を外すと、自分のディレクトリなのに 中に入れなくなります。

ここで、もう一度 drw-rwxr-x をよく見てください。グループ(rwx)にも、その他の人(r-x)にも x が残っています。それでも kaito は断られました。Linux は、まず「あなたは持ち主?」を確かめて、持ち主なら持ち主の3文字だけを見て決めるからです。グループやその他の人の欄に x があっても、持ち主の欄になければ入れません。「自分がどの区分にあたるか」を先に決めてから読む、というのが権限を読むコツです。

確認できたら、元に戻しておきましょう。

  • 1
  • 2
  • 3
  • 4
chmod u+x box
cd box
pwd
cd ..

(例)

  • 1
  • 2
  • 3
  • 4
  • 5
kaito@demo:~/linux-practice/perm-test$ chmod u+x box
kaito@demo:~/linux-practice/perm-test$ cd box
kaito@demo:~/linux-practice/perm-test/box$ pwd
/home/kaito/linux-practice/perm-test/box
kaito@demo:~/linux-practice/perm-test/box$ cd ..

メッセージが日本語で出る環境では

日本語の設定(ロケール)になっている環境では、同じエラーが日本語で表示されます。今回の Debian 13 で日本語の設定にして試すと、次のようになりました。

(例)

  • 1
  • 2
cat: /etc/shadow: 許可がありません
-bash: cd: box: 許可がありません

Debian 13での実行画面

💡
「入れない」ときは、x を疑う

ディレクトリに cd できないとき、ファイルが読めないときは、まず ls -l(ディレクトリそのものは ls -ld ディレクトリ名)で、自分がどの区分にあたって、何の文字がついているかを確かめましょう。原因の多くは、ここで見つかります。

🤖 詰まったらAIに聞こう:Permission denied の意味を読み解きたい

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
Linuxの初心者です。「Permission denied」と表示されました。
下の ls -l の結果から、誰が何をできる状態なのか、なぜ自分が断られたのかを、初心者向けに説明してください。
まだ何も変更しないので、まずは状態の読み方だけ教えてください。

【使っている環境】WSLのUbuntu など
【自分のユーザー名(whoami の結果)】ここに貼る
【実行したコマンド】ここに貼る
【表示されたメッセージ】ここに貼る
【対象の ls -l(ディレクトリなら ls -ld)の結果】ここに貼る

🔒
AIに貼る前に:秘密情報やパスワードは貼らない

ls -l の結果を貼るのは問題ありませんが、ファイルの中身を貼るときは注意してください。設定ファイルにはパスワード、APIキー、トークンが書かれていることがあります。APIキーやトークンは、Web のサービスを使うときに本人の代わりになる、合言葉のような文字列です。必ず見直して「***」に置き換えてから貼りましょう。


読み方ドリル:数字に直してみよう

最後に、手順書でよく見る形を3つ、自分で数字に直してみてください。

  1. -rwxr-x---
  2. drwx------
  3. -rw-r-----

答え:1 は 750(持ち主は全部、グループは読む・実行、その他の人は何もできない)、2 は 700(自分だけが入れるディレクトリ)、3 は 640(この記事で見た /etc/shadow と同じ形)です。「持ち主・グループ・その他」の3つに区切ってから、4・2・1 を足すのがコツです。


よくある質問

Q. x の位置に、t や s が書かれているのは何ですか?

特別な役割の印です。たとえば、前の記事で見た /tmp の drwxrwxrwt の最後の t は、「誰でもファイルを置けるけれど、消せるのは自分のファイルだけ」という印(スティッキービット)です。s は、sudo(=許可されたユーザーが、コマンドの前につけて、そのコマンドだけを管理者の権限で実行するしくみ)のような特別なコマンドで見かける印です。どちらも、最初のうちは自分でつける必要はありません。「見かけたら特別な印」と覚えておけば大丈夫です。

Q. 権限は、数字と文字のどちらで覚えればいいですか?

まずは文字(rwx)で読めるようになるのがおすすめです。数字は、644(ふつうのファイル)・755(ディレクトリやスクリプト)・600(自分だけのファイル)の3つを知っていれば、手順書のほとんどが読めます。

Q. WSL で、Windows 側のファイル(/mnt/c の中)の権限がおかしく見えます。

Windows のファイルは、Linux とは別のしくみで権限を管理しているため、ls -l で見ると全部同じような権限に見えることがあります。練習は、この記事のように Linux 側のホーム(~)の中で行いましょう。


まとめ

  • ls -l の左はしの10文字は「種類1文字+持ち主3文字+グループ3文字+その他3文字」
  • r は読む、w は書く、x は実行(ディレクトリなら「中に入る」)
  • 数字では r=4・w=2・x=1 を足す。644 はふつうのファイル、755 はディレクトリやスクリプト
  • 大事なファイル(/etc/shadow など)ほど、権限がしぼられている
  • 「Permission denied」が出たら、まず ls -l で状態を読む

次の記事では、読めるようになった権限を、chmod と chown で直す方法を見ていきます。


次に読む記事


関連する記事