前の記事で 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) |
- | なし | その権限がない | その権限がない |
準備:練習用のファイルを用意する
練習は ~/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 では、新しく作った 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: 許可がありませんディレクトリに 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)の結果】ここに貼るls -l の結果を貼るのは問題ありませんが、ファイルの中身を貼るときは注意してください。設定ファイルにはパスワード、APIキー、トークンが書かれていることがあります。APIキーやトークンは、Web のサービスを使うときに本人の代わりになる、合言葉のような文字列です。必ず見直して「***」に置き換えてから貼りましょう。
読み方ドリル:数字に直してみよう
最後に、手順書でよく見る形を3つ、自分で数字に直してみてください。
-
-rwxr-x--- -
drwx------ -
-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 で直す方法を見ていきます。
次に読む記事
- 前の記事:Linuxのフォルダ構成|/etc・/home・/var・/usrの役割とリンク
- 次の記事:Linuxの「Permission denied」の直し方|chmod・chownの使い方【初心者向け】
関連する記事
- Pythonで毎日の作業を自動化する入門|ダウンロードフォルダを自動で整理しよう:ファイルを読み書きする自動化を、手元で試してみたい方に
- Cursorにエラーを直してもらう5ステップ|エラーの渡し方・頼み方・直った後の確認まで:Permission denied のようなエラーを、AI に上手に渡したい方に
- Git入門|init・add・commit を1回やってみる:自分のファイルを、変更の履歴つきで管理してみたい方に