Linuxパーミッション入門|chmod・chownを使いこなす

ファイルの所有者とグループを正確に設定し、chmodで権限を700以上にすることで、不正アクセスを防ぎましょう。
Linuxシステムでは、ファイルやディレクトリに付与される読み書き実行の権限(パーミッション)がセキュリティの基本となります。誤った設定はデータ漏洩や権限昇格のリスクを高め、適切なchmod・chownの操作はシステム管理者だけでなく開発者にも必須のスキルです。本記事では、パーミッションの概念から実際のコマンド例、よくあるトラブルシューティングまでをステップバイステップで解説し、実務で即活用できる知識を提供します。
目次
パーミッションの基本概念
所有者・グループ・その他
Linuxでは毎ファイルに三つの主体が関連付けられます:所有者(owner)、グループ(group)、その他(others)。それぞれに読み込み(r)、書き込み(w)、実行(x)の三種の権限が与えられ、これを9ビットで表現します。例えば「-rw-r–r–」は所有者が読み書き、グループとその他が読み取りのみを意味します。
数値表記(オクタル)と記号表記
権限は数値で表すと各主体に対応する値を足し合わせます:読み込み=4、書き込み=2、実行=1。したがって「640」は所有者が6(4+2)、グループが4、その他が0となります。記号表記では「u」が所有者、「g」がグループ、「o」がその他、「a」がすべてを示し、「+」で付与、「-」で削除、「=」で設定を行います。
umaskの役割
新規作成時のデフォルト権限はumaskで決まります。典型的なumask「022」は新規ファイルに「644」、ディレクトリに「755」を付与します。umaskを変更すると作成時の権限が変わり、セキュリティポリシーに合わせた調整が可能です。
chmodの使い方
基本構文と実行例
chmodコマンドの構文は「chmod [オプション] モード ファイル…」です。モードには数値または記号を指定できます。たとえば「chmod 755 script.sh」は所有者に全権限、グループ・その他に読み込みと実行を付与します。
記号モードの実践例
所有者に書き込みを追加したい場合は「chmod u+w file.txt」、グループの実行権限を削除したい場合は「chmod g-x file.txt」、その他全員に読み込みのみを設定したい場合は「chmod a=r file.txt」となります。複数の変更を一度に行うにはカンマで区切ります:chmod u+rwx,g+rx,o-rwx file.txt。
数値モードと記号モードの比較表
| 比較項目 | 数値モード | 記号モード |
|---|---|---|
| 直感的理解 | 数字で権限の合計を覚える必要がある | 「u」「g」「o」「+」「-」「=」で視覚的に操作可能 |
| 複雑な設定 | すべてのビットを一度に指定しなければならず、部分変更が不便 | 特定の主体のみを対象にした増減が簡単 |
| スクリプトでの利用 | 一定の権限を一括で設定するときに簡潔 | 条件分岐で権限の一部だけを変えるケースに適する |
再帰的変更と注意点
ディレクトリ以下のすべてのファイルに同じ権限を適用するには「-R」オプションを使います:chmod -R 755 /var/www/html。ただし、システムファイルや重要な設定ディレクトリに対しては誤って実行しないよう、必ず対象範囲を確認してください。
chownの使い方
所有者とグループの変更
chownコマンドは「chown [オプション] 所有者[:グループ] ファイル…」の形式です。所有者だけを変更したい場合は「chown newuser file.txt」、グループも同時に変更したい場合は「chown newuser:newgroup file.txt」とコロンで区切ります。
グループのみの変更
所有者を変更せずにグループだけを変えたいときは「chown :newgroup file.txt」のように所有者部分を空にします。これによりファイルの所有者はそのままでグループだけが更新されます。
再帰的変更と保守点検
ディレクトリツリー全体の所有者を一括で変える場合は「-R」をつけます:chown -R www-data:www-data /var/www。実行後は「ls -l」で結果を確認し、意図しない変更がないか点検する習慣をつけましょう。
実践的なシナリオとベストプラクティス
Webサービスのファイル権限設定
典型的なLAMP環境では、ウェブサーバー(例:apacheやnginx)が読み取り実行できるようにディレクトリは「755」、ファイルは「644」に設定します。ただし、アップロードディレクトリのように書き込みが必要な場所は、所有者をウェブサーバーのユーザーに変更し、権限を「750」または「770」に設定すると安全です。
秘密鍵や設定ファイルの保護
SSHの秘密鍵(~/.ssh/id_rsa)は所有者のみに読み書きを許可し、「600」に設定します。同様に、/etc/shadowや設定ファイルは「640」や「600」にし、不要なユーザーからの閲覧を防ぎます。
トラブルシューティングのチェックリスト
- 「ls -l」で現在の権限と所有者を確認
- アクセス拒否が発生した場合、所有者が実行しているプロセスのユーザーと一致しているか検証
- ディレクトリの実行権限(x)が欠けていないか確認(ディレクトリにxがないと中身へのアクセスが不可)
- SELinuxやAppArmorなどのMACポリシーが関与していないか確認
- 必要に応じてchmod・chownで修正し、再度テスト
定期的な権限レビューの重要性
システム運用では、時間の経過とともに不要な権限が残存しがちです。月次で「find / -type f -perm -002」などワールド書き込み可能なファイルを検出し、適切に修正する習慣を持つことで、内部不正やマルウェアによる権限昇格リスクを低減できます。
よくある質問(FAQ)
- Q1. chmodとchownのどちらを先に実行すべきですか?
- A. 原則として所有者・グループの設定(chown)を先に行い、その後で権限(chmod)を調整します。所有者が変わると以前の権限が不適切になることがあるためです。
- Q2. 数値モードと記号モードのどちらが初心者向けですか?
- A. 記号モードは「u+w」「g-x」など直感的に何をしたいかが表現しやすいため、初心者にはこちらをおすすめします。慣れてきたら数値モードの一括設定も活用すると効率的です。
- Q3. ウェブアップロードディレクトリの権限はどのように設定すれば安全ですか?
- 所有者をウェブサーバーのユーザー(例:www-data)に変更し、グループも同一にして「750」または「770」に設定します。これにより、ウェブサーバーだけが書き込みでき、その他のユーザーからはアクセスを制限できます。
- Q4. ミスで重要なシステムファイルの権限を変えてしまった場合、どう復旧すればよいですか?
- バックアップから復元するのが最も確実です。バックアップがない場合は、同じディストリビューションのインストールメディアから元の権限を参考にし、「rpm –setperms」や「dpkg -S」などパッケージマネージャのツールで復元を試みます。
- Q5. ファイルの所有者をrootに変更せずに特定のユーザーだけに実行権限を与える方法はありますか?
- はい。所有者はそのままで、対象のユーザーを含むグループを作成し、そのグループに実行権限を付与します。たとえば、グループ「developers」を作成し、対象ユーザーを所属させた後に「chmod g+x file.txt」とします。
まとめ
Linuxのパーミッションは、所有者・グループ・その他という三層構造と、読み書き実行の三種権限の組み合わせで構成されます。chmodで権限を細かく制御し、chownで所有者とグループを適切に設定することで、システムのセキュリティと運用効率を大きく向上させられます。数値モードと記号モードの特徴を理解し、シナリオに合わせて使い分けることが重要です。また、umaskや定期的な権限レビュー、ミス時の復旧手順を把握しておくことで、予期しないトラブルを未然に防ぎましょう。本記事で紹介したコマンド例とベストプラクティスを参考に、実際の環境で試してみてください。
本記事はInfra Academy編集部が各ベンダー公式ドキュメント・エンジニア監修をもとに作成しています。インフラ・クラウド構築は環境により異なります。本番環境への適用前に必ずテストを実施してください。情報の正確性には万全を期していますが、最新情報は各公式ドキュメントをご確認ください。 編集ポリシーはこちら




