「ls -l を実行したら -rwxr-xr-x って表示されたけど、何の意味?」
この記事では、Linuxのファイル権限(パーミッション)の仕組みと、chmod・chown コマンドの使い方を完全解説します。セキュリティの基本として、サーバー管理では必須の知識です。
ターミナルの基本操作がまだの方は「ターミナルの使い方と基本コマンド20選」をご覧ください。
パーミッションとは?
パーミッション(Permission)とは、ファイルやディレクトリに対して「誰が」「何をできるか」を制御する仕組みです。Linuxはマルチユーザー対応のOSなので、複数のユーザーが同じシステムを利用することを前提に設計されています。
ls -l コマンドを実行すると、各ファイルのパーミッションが表示されます。
$ ls -l
-rwxr-xr-x 1 user group 4096 Mar 14 12:00 script.sh
drwxr-xr-x 2 user group 4096 Mar 14 12:00 documents/
3種類の権限(r・w・x)
- r(read):読み取り ファイルの中身を読める。ディレクトリの場合はファイル一覧を表示できる
- w(write):書き込み ファイルを編集・削除できる。ディレクトリの場合はファイルを作成・削除できる
- x(execute):実行 ファイルをプログラムとして実行できる。ディレクトリの場合は中に入れる(cd できる)
3種類の対象(所有者・グループ・その他)
- 所有者(Owner):ファイルを作成したユーザー
- グループ(Group):ファイルが属するグループのメンバー
- その他(Others):上記以外のすべてのユーザー
数字(8進数)表記の仕組み
パーミッションは数字で表現することもできます。r=4・w=2・x=1・-=0 として、3つの値を足し算します。
# 755 = rwxr-xr-x
# 所有者: r(4)+w(2)+x(1) = 7
# グループ: r(4)+w(0)+x(1) = 5
# その他: r(4)+w(0)+x(1) = 5
# 644 = rw-r--r--
# 所有者: r(4)+w(2)+x(0) = 6
# グループ: r(4)+w(0)+x(0) = 4
# その他: r(4)+w(0)+x(0) = 4
chmod ― パーミッションを変更する
chmod(change mode)はファイルのパーミッションを変更するコマンドです。数字指定とシンボル指定の2つの方法があります。
数字指定(よく使う方法)
# 基本構文
$ chmod [パーミッション] [ファイル名]
# 755 に変更(スクリプトに実行権限を付与する定番)
$ chmod 755 script.sh
# 644 に変更(設定ファイルの標準的な権限)
$ chmod 644 config.txt
# 700 に変更(秘密鍵などの厳密な保護)
$ chmod 600 ~/.ssh/id_rsa
# ディレクトリ内を再帰的に変更
$ chmod -R 755 ./public_html/
シンボル指定(権限を追加・削除する方法)
シンボル指定では「誰に(u/g/o/a)」「どうする(+/-/=)」「何の権限(r/w/x)」という形式で指定します。
# u=所有者(user) g=グループ(group) o=その他(others) a=全員(all)
# + 追加 - 削除 = 設定(それ以外を削除)
# 所有者に実行権限を追加
$ chmod u+x script.sh
# その他から書き込み権限を削除
$ chmod o-w file.txt
# 全員に読み取り権限を付与
$ chmod a+r readme.txt
# 所有者に読み書き実行、それ以外を削除
$ chmod u=rwx,g=rx,o=rx script.sh
よく使うパーミッション一覧
chown ― 所有者を変更する
chown(change owner)はファイルの所有者やグループを変更するコマンドです。sudo(管理者権限)が必要です。
# 基本構文
$ sudo chown [所有者] [ファイル名]
$ sudo chown [所有者]:[グループ] [ファイル名]
# 所有者をwww-dataに変更(Webサーバーによく使う)
$ sudo chown www-data /var/www/html/index.html
# 所有者とグループを同時に変更
$ sudo chown user:group file.txt
# ディレクトリ内を再帰的に変更
$ sudo chown -R user:group /var/www/html/
# 現在の所有者を確認
$ ls -l file.txt
chgrp ― グループを変更する
chgrp(change group)はファイルのグループのみを変更するコマンドです。
# グループをwww-dataに変更
$ sudo chgrp www-data /var/www/html/
# 再帰的に変更
$ sudo chgrp -R developers ./project/
よくある間違いと注意点
⚠️ chmod 777 は絶対に避ける
chmod 777 は全員に全権限(読み・書き・実行)を与えます。「とりあえず動かしたい」という理由で使いがちですが、本番サーバーでは重大なセキュリティホールになります。
# ❌ 絶対にやってはいけない(本番サーバーで)
$ chmod 777 /var/www/html/
# ✅ 正しい設定例(Webサーバーのドキュメントルート)
$ sudo chown -R www-data:www-data /var/www/html/
$ sudo chmod -R 755 /var/www/html/
SSHの秘密鍵は必ず600または700
SSH秘密鍵のパーミッションが緩い場合、SSHクライアントは接続を拒否します。
# SSHで「Permissions too open」エラーが出たら
$ chmod 600 ~/.ssh/id_rsa # 秘密鍵
$ chmod 644 ~/.ssh/id_rsa.pub # 公開鍵
$ chmod 700 ~/.ssh/ # .sshディレクトリ
パーミッション表示の読み方
例:-rwxr-xr-x の各文字が何を意味するか。
| 位置 | 文字 | 意味 |
|---|---|---|
| 1文字目 | – / d / l | ファイル種別(-=ファイル、d=ディレクトリ、l=シンボリックリンク) |
| 2〜4文字目 | rwx | オーナーの権限(r=読取、w=書込、x=実行) |
| 5〜7文字目 | r-x | グループの権限 |
| 8〜10文字目 | r-x | その他のユーザーの権限 |
数字表記の計算方法
| 権限 | 数値 | 意味 |
|---|---|---|
| r(読取) | 4 | ファイルを読める |
| w(書込) | 2 | ファイルを書き換えられる |
| x(実行) | 1 | ファイルを実行できる |
| -(なし) | 0 | 権限なし |
よく使うパーミッション一覧
| 数値 | 記号表記 | 用途 |
|---|---|---|
| 755 | rwxr-xr-x | 一般的なスクリプト・ディレクトリ |
| 644 | rw-r–r– | 一般的なファイル(設定ファイルなど) |
| 600 | rw——- | SSHの秘密鍵など機密ファイル |
| 700 | rwx—— | オーナーのみアクセスできるディレクトリ |
| 777 | rwxrwxrwx | 全員が読み書き実行可(セキュリティ上非推奨) |
| 444 | r–r–r– | 全員が読み取りのみ |
まとめ:この記事で学んだこと
- パーミッションは「所有者・グループ・その他」の3層で「読み(r=4)・書き(w=2)・実行(x=1)」を制御する
- chmod 755:実行ファイル・公開ディレクトリの標準設定
- chmod 644:設定ファイル・通常ファイルの標準設定
- chmod 600/700:SSHキーなど厳密な保護が必要なファイル
- chmod 777:本番環境では絶対に使わない
- chown:所有者変更(sudo 必要)
- chgrp:グループ変更(sudo 必要)
関連記事
▶ 関連記事:SSHの基本と公開鍵認証【サーバー接続完全ガイド】
▶ Linuxユーザー・グループ管理【useradd/usermod完全解説】
📋 Linux入門チートシート完全版で全コマンドを一気に復習できます。



コメント