Linux の権限管理は「セキュリティ」の心臓部です。
ファイルやディレクトリを誰が読み書き実行できるかを細かく設定できる一方で、
設定ミスはデータの漏えいやシステム停止のリスクとなります。
そこで本稿では、Linux 権限を「何ができるか」を数値と記号で表す「chmod」と
「chown」を使いこなす方法を、初心者でも分かりやすいように段階的に解説します。
1. 権限の基本構造
Linux では「ユーザー(owner)」「グループ(group)」「その他(others)」の3層で権限を指定します。
それぞれに対して読み込み (r)、書き込み (w)、実行 (x) の3つのフラグがあり、
「読み取り・書き込み・実行」の3ビットで表現されます。
| フラグ | 数値 | 意味 |
|---|---|---|
| r | 4 | Read |
| w | 2 | Write |
| x | 1 | Execute |
例えば rwx は 4+2+1 = 7、-rw- は 4+2 = 6、r-- は 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でディレクトリ構造内すべてを再帰的に変更。
chgrpはchown :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 レベルで制御しますが、SELinux や AppArmor でさらに細粒度制御が可能です。
- 典型的には「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/*.confは owner のみ書き込み。
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
これにより、root とmysql 以外のユーザーは読み/書きできないように保護。
7. まとめ
Linux の権限管理は「誰が何をできるか」を細かく制御するための重要なテクニックです。
- chmod で数値または記号方式で権限を設定。
- chown で所有者とグループを切り替えて、最小権限設計を実装。
- 監査と定期的な見直しを怠らない。
- SELinux/AppArmor 等の追加的なセキュリティ層を併用すると、より堅牢に。
実際にコマンドを入力しながら、権限の見える化を行うことで、初心者でも慣れるはずです。
今すぐ自分のサーバに「chmod と chown」を使った権限設定を一度実行し、安心のセキュリティを確保しましょう。

コメント