【初心者向け】Linux 権限管理を徹底解説!chmod と chown の使い方をわかりやすく

IT入門辞典

Linux の権限管理は「セキュリティ」の心臓部です。
ファイルやディレクトリを誰が読み書き実行できるかを細かく設定できる一方で、
設定ミスはデータの漏えいやシステム停止のリスクとなります。
そこで本稿では、Linux 権限を「何ができるか」を数値と記号で表す「chmod」と
「chown」を使いこなす方法を、初心者でも分かりやすいように段階的に解説します。

1. 権限の基本構造

Linux では「ユーザー(owner)」「グループ(group)」「その他(others)」の3層で権限を指定します。
それぞれに対して読み込み (r)書き込み (w)実行 (x) の3つのフラグがあり、
「読み取り・書き込み・実行」の3ビットで表現されます。

フラグ数値意味
r4Read
w2Write
x1Execute

例えば rwx は 4+2+1 = 7-rw- は 4+2 = 6r-- は 4 = 4 です。
この 3 桁の数を chmod で指定すると、ユーザー・グループ・その他それぞれの権限が同時に設定できます。

chmod 754 ファイル名

7(所有者)=rwx、5(グループ)=r-x、4(その他)=r--

2. chmod の使い方

2-1 数値方式(オクタル形式)

最も一般的な形式。上記の例のように、3 桁のオクタル数(0〜7)で指定します。
+ / / = を使って補完的に変更することも可能です。

命令説明
chmod 777 ファイルすべてにフルアクセス
chmod 644 ファイル所有者読み書き、他は読み込みのみ
chmod 700 ディレクトリ所有者のみ完全アクセス、他はなし

2-1-1 +, -, = の使い分け

chmod u+x script.sh          # 所有者に実行権限を付与
chmod g-w file.txt           # グループから書き込み権限を削除
chmod o=r file.txt           # 他者を読み込み専用に設定

2-2 記号方式(シンボリックモード)

人が直感的に読める形で権限を指定する方法です。

chmod u=rw,g=r,o= myfile

ここで u は owner、g は group、o は others を表します。
+-= の三種が上記のように使用できます。

2-3 再帰的変更

ディレクトリ内の全ファイル・サブディレクトリに対して権限を変更したい場合は -R オプションを付けます。

chmod -R 755 mydir/

-R は慎重に。ディレクトリを実行許可(x)にし、全ユーザーが遅らせると
不正アクセス のリスクが高まります。

3. chown の使い方

chown は「所有者(owner)」と「グループ(group)」を変更します。
権限を設定した後に、ファイル自体の所有者を切り替えることで、細かい操作権限を調整できます。

3-1 基本構文

chown [オプション] ユーザー名:グループ名  ファイル

ユーザー名 を置き換え、必要なら :グループ名 を省略可能(グループ指定なしで変更)。

chown alice:developers report.pdf
  • alice が所有者、developers グループが所有となります。

3-2 グループのみ変更

chgrp -R developers /var/www

-R でディレクトリ構造内すべてを再帰的に変更。
chgrpchown :group と同等です。

3.3 所有権だけでなく権限も合わせて変更

以下のように chmod と組み合わせて一括設定が簡単です。

chown apache:apache /var/www/html
chmod 755 /var/www/html

4. 実務でのベストプラクティス

4-1 所有者とグループの設計

  • ロールベース:例:root はシステム全体、apache はウェブサーバ、dev は開発者用。
  • 小さめのグループ:権限を最小化することで攻撃面を減らす。

4-2 パーミッション「最小権限の原則」

  • 必要最小限:実行権限は実行可能なファイル・ディレクトリだけに。
  • 書き込み権限は必要時のみ:例:ログファイルは適切な場所に書き込めるように設定。

4-3 定期的な監査

find /var/www -type d -perm -o+w -ls

これは「others(他者)」が書き込み権限を持っているディレクトリをリストアップします。
定期的に実行し、不要な権限を見直しましょう。

4-4 SELinux/AppArmor との併用

  • 権限は OS レベルで制御しますが、SELinuxAppArmor でさらに細粒度制御が可能です。
  • 典型的には「chmod + chown」でファイルレベルを整えてから、ポリシー でアクセス制御を追加します。

5. よくあるトラブルと対処法

トラブル原因対処法
「ファイルが実行できない」実行ビットが付いていないchmod +x file
「他ユーザーが書き込める」chmod 777 等で過剰な許可必要最低限に修正 (chmod 644 など)
「ウェブサイトが表示されない」ウェブサーバーユーザーの読み取り権限不足chown www-data:www-data /path と適切に権限を設定
「ディレクトリが検索できない」ディレクトリの実行権限不足chmod +x dir

6. 実際の運用シナリオ

6-1 ウェブアプリの設定

# ディレクトリとファイルのレイアウト
/var/www/html/          # ドキュメントルート(owner: www-data)
/var/www/html/config/   # 設定ファイル(owner: www-data)
/var/www/html/app/      # アプリケーションコード(owner: www-data)

# 設定
chown -R www-data:www-data /var/www/html
chmod -R 750 /var/www/html/app
chmod 640 /var/www/html/config/*.conf
  • app/ には 実行書き込み が必要、しかし他は読み込みのみ。
  • config/*.confowner のみ書き込み。

6-2 バックアップスクリプトの保守

#!/bin/bash
backup_dir="/backups"

# 所有者を root に、chmod 755 で実行
chown root:root $backup_dir
chmod 755 $backup_dir
chmod +x backup_script.sh

6.3 データベースファイル管理

MySQL のデータベースディレクトリは通常 mysql ユーザーが所有。

chown -R mysql:mysql /var/lib/mysql
chmod 750 /var/lib/mysql

これにより、rootmysql 以外のユーザーは読み/書きできないように保護。

7. まとめ

Linux の権限管理は「誰が何をできるか」を細かく制御するための重要なテクニックです。

  • chmod で数値または記号方式で権限を設定。
  • chown で所有者とグループを切り替えて、最小権限設計を実装。
  • 監査と定期的な見直しを怠らない。
  • SELinux/AppArmor 等の追加的なセキュリティ層を併用すると、より堅牢に。

実際にコマンドを入力しながら、権限の見える化を行うことで、初心者でも慣れるはずです。
今すぐ自分のサーバに「chmodchown」を使った権限設定を一度実行し、安心のセキュリティを確保しましょう。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント