こんにちは、インフラエンジニアのryuです。
Linuxでファイルを編集したら、
Permission deniedと表示された。chmod 755や644を見ても、数字の意味が分からない。
そんなことはありませんか?
Linuxでは、ファイルやディレクトリごとに、誰が読み込み、書き込み、実行できるのかを設定します。
この記事では、権限の確認方法、rwxと数字の読み方、chmod・chownの使い方を解説します。
Linuxのファイル権限とは?¶
ファイル権限とは、ユーザーがファイルやディレクトリに対して行える操作を制限する仕組みです。
重要な設定ファイルを誰でも変更できると、誤操作や不正な書き換えにつながります。
権限が必要な理由¶
Linuxは、複数のユーザーやサービスが同時に利用することを前提としています。
そのため、所有者やグループごとに操作範囲を分けています。
例えば、設定ファイルは管理者だけが変更し、一般ユーザーは読み取りだけにできます。
読み込み・書き込み・実行の3種類¶
Linuxの基本的な権限は、r、w、xの3種類です。
| 表示 | 権限 | ファイルでの意味 | ディレクトリでの意味 |
|---|---|---|---|
r |
read | 内容を読み取る | 中の名前を一覧表示する |
w |
write | 内容を書き換える | 中にファイルを作成・削除する |
x |
execute | プログラムとして実行する | 中へ移動し、項目へアクセスする |
ディレクトリでは、権限の意味が少し異なります。
例えば、ディレクトリにrがあってもxがなければ、一覧は見えても中のファイルへ正常にアクセスできない場合があります。
Linuxの権限を確認する方法¶
権限を変更する前に、現在の状態を確認しましょう。
ここではls -lとstatを使います。
ls -lで確認する¶
以下のコマンドを実行します。
ls -l test.txt
実行結果の例です。
-rw-r----- 1 user1 developers 1200 Jul 15 10:00 test.txt
左側の-rw-r-----が、ファイルの種類と権限を表しています。
後ろのuser1は所有ユーザー、developersは所有グループです。
10文字の権限表示を読む¶
-rw-r-----は、次の4つに分けて読みます。
- | rw- | r-- | ---
所有者 グループ その他
先頭の1文字はファイルの種類です。
| 表示 | 種類 |
|---|---|
- |
通常ファイル |
d |
ディレクトリ |
l |
シンボリックリンク |
残りの9文字は、所有者、所有グループ、その他のユーザーの順に3文字ずつ並びます。
この例では、所有者は読み書きでき、グループは読み取りだけ、その他のユーザーには権限がありません。

statで数字の権限も確認する¶
statを使うと、記号と数字をまとめて確認できます。
stat -c '%A %a %U %G %n' test.txt
実行結果は次のようになります。
-rw-r----- 640 user1 developers test.txt
640が数字で表した権限です。
chmodでファイル権限を変更する¶
ファイルやディレクトリの権限は、chmodコマンドで変更します。
権限は数字または記号で指定できます。
数字で権限を指定する¶
基本的な書式は以下です。
chmod 640 test.txt
3桁は、左から所有者、所有グループ、その他のユーザーを表します。

各桁は、次の数字を足して作ります。
| 権限 | 数字 |
|---|---|
読み込みr |
4 |
書き込みw |
2 |
実行x |
1 |
| 権限なし | 0 |
例えば、読み込みと書き込みなら4 + 2 = 6です。
読み込みと実行なら4 + 1 = 5になります。

よく使う644・755・600・700¶
よく使う権限は以下です。
| 数字 | 記号 | 主な例 |
|---|---|---|
644 |
rw-r--r-- |
一般的な設定ファイルやテキスト |
755 |
rwxr-xr-x |
実行ファイルや公開ディレクトリ |
600 |
rw------- |
秘密鍵や所有者だけが読むファイル |
700 |
rwx------ |
所有者だけが使うディレクトリ |
640 |
rw-r----- |
所有者とグループだけで共有するファイル |
これらは代表例です。
必要な人へ、必要な操作だけを許可することが基本です。
記号で権限を変更する¶
記号形式では、変更する対象と操作を指定します。
| 記号 | 意味 |
|---|---|
u |
所有ユーザー |
g |
所有グループ |
o |
その他のユーザー |
a |
すべて |
+ |
権限を追加 |
- |
権限を削除 |
= |
権限を指定内容に設定 |
所有者へ実行権限を追加する場合は、以下の通りです。
chmod u+x script.sh
その他のユーザーから書き込み権限を削除します。
chmod o-w test.txt
グループを読み取り専用にする場合は、次のように指定します。
chmod g=r test.txt
一部だけ変更するときは、記号形式の方が意図を伝えやすいです。
ディレクトリ内を再帰的に変更する¶
-Rを付けると、ディレクトリ以下をまとめて変更できます。
chmod -R 755 public/
ただし、ファイルにも実行権限が付くため、安易な一括変更はおすすめしません。
ディレクトリとファイルを分ける場合は、findを使えます。
find public -type d -exec chmod 755 {} +
find public -type f -exec chmod 644 {} +
実行前にfindだけで対象を確認しましょう。
所有者とグループを変更する¶
権限が正しくても、所有者が想定と違うと操作できない場合があります。
所有者や所有グループはchownで変更します。
chownで所有者を変更する¶
所有者をuser1へ変更します。
sudo chown user1 test.txt
所有者とグループを同時に変更する場合は、コロンで区切ります。
sudo chown user1:developers test.txt
所有グループだけを変更する場合は、chgrpも使えます。
sudo chgrp developers test.txt
詳しい使い方は、Linuxのchownコマンドで所有者を変更する方法も参考にしてください。
再帰的なchownに注意する¶
ディレクトリ以下をまとめて変更する場合は、-Rを付けます。
sudo chown -R user1:developers project/
実行範囲を間違えると、OSに必要な所有者まで変わる可能性があります。
sudo chown -Rを実行する前に、現在地と対象パスを必ず確認してください。
Permission deniedが出たときの確認方法¶
Permission deniedが出ても、すぐにchmod 777を実行してはいけません。
まず、どの権限が不足しているのか確認します。
対象ファイルの権限を確認する¶
最初に、対象の権限と所有者を確認します。
ls -l test.txt
id
idでは、現在のユーザーと所属グループを確認できます。
uid=1001(user1) gid=1001(user1) groups=1001(user1),1002(developers)
ファイルの所有グループに所属しているかも確認しましょう。
親ディレクトリの権限を確認する¶
ファイル自体に権限があっても、親ディレクトリへ入れなければアクセスできません。
namei -l /var/www/app/config.ini
namei -lを使うと、パスの各階層の所有者と権限を確認できます。
コマンドがない環境では、各ディレクトリへls -ldを実行します。
ls -ld /var /var/www /var/www/app
ディレクトリには、途中の階層を通過するためのx権限が必要です。
削除できない場合はディレクトリを見る¶
ファイルを削除できるかどうかは、ファイル自身の書き込み権限だけでは決まりません。
基本的には、そのファイルが置かれているディレクトリのwとx権限が関係します。
ls -ld .
ls -l target.txt
削除時のエラーについては、Permission deniedでファイルを削除できない場合の対処方法で解説しています。
chmod 777を安易に使ってはいけない¶
777は、所有者、グループ、その他の全員へ読み書き実行を許可します。
rwxrwxrwx
エラーは消えても、不要なユーザーへ書き込みを許可します。
必要な権限だけを付ける¶
実行ファイルなら、所有者へxを追加するだけで解決するかもしれません。
chmod u+x script.sh
グループで共有するなら、所有グループとグループ権限を調整します。
sudo chown user1:developers report.txt
chmod 660 report.txt
権限エラーは、所有者、グループ、親ディレクトリも含めて判断しましょう。
Linuxのファイル権限まとめ¶
Linuxの基本権限は、読み込みr、書き込みw、実行xの3種類です。
権限は所有者、所有グループ、その他のユーザーごとに設定されます。
現在の状態はls -lで確認できます。
ls -l test.txt
変更はchmod、所有者の変更はchownを使います。
chmod 640 test.txt
sudo chown user1:developers test.txt
エンジニアとして10年以上Linuxを扱っていますが、権限エラーが出たときに、私は最初から777へ変更しません。
ファイル、親ディレクトリ、所有者、実行ユーザーを確認し、不足している権限だけを変更します。
エラーを消すことではなく、必要最小限の権限で正しく動かすことが大切です。
Linuxの権限を実際に練習したい方へ¶
InfraAcademyでは、ブラウザ上のLinux環境でファイルを作成し、chmodやchownを実行しながら学習できます。
基本的なファイル操作から学びたい方は、Linux入門講座を確認してみてください。
権限管理まで学びたい方は、Linux中級講座がおすすめです。