Linux入門

ファイル権限(パーミッション)を完全理解【rwxとchmod】

Linux入門
記事内に広告が含まれています。

ls -l を実行したら -rwxr-xr-x って表示されたけど、何の意味?」

この記事では、Linuxのファイル権限(パーミッション)の仕組みと、chmodchown コマンドの使い方を完全解説します。セキュリティの基本として、サーバー管理では必須の知識です。

ターミナルの基本操作がまだの方は「ターミナルの使い方と基本コマンド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/
パーミッション表示の読み方 rwxr-xr-x 解説図
▲ ls -l の出力は「ファイル種別(1文字)」+「所有者(3文字)」+「グループ(3文字)」+「その他(3文字)」の計10文字で構成される

3種類の権限(r・w・x)

  • r(read):読み取り ファイルの中身を読める。ディレクトリの場合はファイル一覧を表示できる
  • w(write):書き込み ファイルを編集・削除できる。ディレクトリの場合はファイルを作成・削除できる
  • x(execute):実行 ファイルをプログラムとして実行できる。ディレクトリの場合は中に入れる(cd できる)

3種類の対象(所有者・グループ・その他)

  • 所有者(Owner):ファイルを作成したユーザー
  • グループ(Group):ファイルが属するグループのメンバー
  • その他(Others):上記以外のすべてのユーザー

数字(8進数)表記の仕組み

パーミッションは数字で表現することもできます。r=4w=2x=1-=0 として、3つの値を足し算します。

パーミッション 数字表記の計算方法(755・644・700の内訳)
▲ r=4, w=2, x=1 の組み合わせ。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

よく使うパーミッション一覧

よく使うパーミッション 755 644 700 600 777 444 一覧表
▲ 777は全員に全権限を与える危険な設定。本番サーバーでは絶対に避ける

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入門チートシート完全版で全コマンドを一気に復習できます。

コメント

タイトルとURLをコピーしました