「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ディレクトリ
まとめ:この記事で学んだこと
- パーミッションは「所有者・グループ・その他」の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入門チートシート完全版で全コマンドを一気に復習できます。


コメント