Linuxを触り始めると、かなり早い段階で「Permission denied」に出会います。スクリプトを実行しようとして弾かれる、ディレクトリに入ろうとして弾かれる、ファイルを保存しようとして弾かれる——原因が分からないと、そこで手が止まってしまう人は少なくありません。結論から言うと、Permission deniedの多くは「誰が」「何に対して」「どんな操作をしようとしたか」を順番に確認すれば直せます。この記事では、Linuxの権限の仕組みをゼロから未経験向けに解説し、実際に手を動かして直す手順まで説明します。
「Permission denied」が出る仕組みと最初に確認する3点
LinuxはOS自体が複数ユーザーの利用を前提に作られていて、ファイルやディレクトリごとに「誰が」「何を」できるかが細かく決められています。Permission deniedは、その決まりに反した操作をしようとしたときにOSが返すエラーです。
エラーに出会ったら、まず次の3点を順番に確認してください。
- 自分は今、どのユーザーとして操作しているか(
whoami) - 対象のファイルやディレクトリの所有者・権限はどうなっているか(
ls -l) - 自分がしようとしたのは「読む」「書く」「実行する」のどの操作か
この3点さえ押さえれば、エラーメッセージだけを見て途方に暮れることはなくなります。
Linuxのパーミッションの仕組み:rwx・所有者・グループ
ls -l を実行すると、行の先頭にこのような文字列が出てきます。
-rwxr-xr-- 1 taro staff 1024 8月 29 10:00 deploy.sh先頭の10文字が権限を表していて、1文字目がファイル種別(-は通常ファイル、dはディレクトリ)、残り9文字が3文字ずつ「所有者(owner)」「グループ(group)」「その他(other)」の権限を表します。
| 記号 | 意味 | 数値 |
|---|---|---|
| r | 読む(read) | 4 |
| w | 書く(write) | 2 |
| x | 実行する/ディレクトリに入る(execute) | 1 |
先ほどの例だと、所有者は読み書き実行(rwx=7)、グループは読み実行(r-x=5)、その他は読みのみ(r--=4)で、まとめて 754 と表現できます。この数値は chmod コマンドでそのまま使うので、覚えておくと権限変更が一気に楽になります。
ディレクトリの場合、x は「そのディレクトリに入れるか」を意味します。中身の一覧を見る r だけあっても x が無いと cd できず、Permission deniedになる点は未経験者がよくつまずくポイントです。このrwxの読み方と権限変更は、Linux学習ロードマップの権限ステップで実際に手を動かして確認できます。
ケース別:Permission deniedの直し方
代表的な4つのケースと、それぞれの直し方をまとめます。
- 自作スクリプトを実行できない: 多くの場合、実行権限(x)が付いていません。
chmod +x deploy.shを実行し、ls -lでxが付いたか確認します - ファイルの所有者が自分と違う:
ls -lで所有者を確認し、権限を変更してよい対象ならsudo chown 自分のユーザー名 対象ファイルで所有者を変更します - ディレクトリに入れない・一覧が見えない: ディレクトリ自体の権限を
ls -ld ディレクトリ名で確認し、x(実行)やr(読み取り)が欠けていないか見ます - そもそも一般ユーザーが触ってよい場所ではない:
/etcや/var配下などシステムの設定領域は、一般ユーザーの権限では変更できない設計になっています。この場合は権限を広げるのではなく、本当に自分が変更すべき場所なのかを見直すのが先です
上から順に確認していけば、原因不明のまま止まる状況はかなり減らせます。
sudoを使う前に確認したいこと(現場目線)
権限エラーが出るたびに sudo chmod 777 のように全員に読み書き実行を許可して強引に解決する例を見かけますが、これはおすすめできません。現役でインフラの現場にいる立場から言うと、権限は「事故を防ぐための仕組み」なので、エラーを消すために権限を広げすぎると、本来守られるべきファイルまで誰でも書き換えられる状態になってしまいます。特に本番環境では、権限を緩めたこと自体が後から重大な問題として扱われることもあります。
大切なのは「なぜその権限が必要なのか」を先に考える順番です。実行権限だけで直る話なのか、そもそも自分が触ってよい対象なのか、所有者を変えるべきかチームに確認が必要な状況なのか——この判断を飛ばして sudo に頼る癖がつくと、原因を切り分ける力がいつまでも身につきません。
InfraDojoなら
InfraDojoなら、ブラウザ上のターミナルで権限エラーを何度も起こして直す演習ができます。壊れても何度でも作り直せる環境なので、chmod や chown の挙動を実際に手を動かして体に覚えさせるにはちょうどいい練習場所です。権限の理解はLinuxコマンド全般の土台になるので、Linuxコマンドは暗記しないと合わせて練習すると定着しやすくなります。体系的な学習の流れはインフラエンジニアキャリアロードマップで確認できます。
よくある質問
Q. sudoを使えば大抵のPermission deniedは解決しますか?
一時的にはほぼ解決しますが、それは根本原因を直したことにはなりません。sudoは「本来権限がない操作を管理者権限で強制的に通す」仕組みなので、なぜ権限が足りなかったのかを確認しないまま使い続けると、本番環境で権限設計を壊してしまうリスクがあります。まずは所有者・権限・操作内容を確認する習慣をつけてください。
Q. chmod 777はやってはいけないのですか?
777は所有者・グループ・その他の全員に読み書き実行を許可する設定で、必要な場面はごく限られます。動かないからといって777にする対応を続けると、誰でもファイルを書き換えられる状態が積み重なり、後から原因を追いにくいトラブルにつながりやすくなります。まずは実行権限(+x)や所有者変更など、必要最小限の変更で直せないかを先に検討してください。
Q. 権限の勉強はどこから始めればいいですか?
まずは今回扱ったls -lの見方と、rwx・所有者・グループの3つの組み合わせを手を動かして確認するのが近道です。土台となるLinux学習の順番全体はLinuxの勉強は何から始める?で解説しているので、あわせて読んでみてください。