Linuxファイル権限の見方とchmodの安全な設定方法
このページの目的:chmodする前に、必要な権限とアクセス可否を判断し、過剰な権限付与を防ぐ
このページで分かること
- r・w・xと数値の対応
- rwxと数値表記の読み方(644・755などの詳細は専用早見表へ)
- chmodとchownの役割の違い、所有者・グループの変更方法
- umaskと新規ファイル・ディレクトリの初期権限
- Permission denied発生時の案内
先に結論
権限は一律に644や755へ揃えるのではなく、ファイルの用途と実行ユーザーに合わせて必要最小限にします。変更前後は namei -l、getfacl、所有者・親ディレクトリまで確認します。
Linux権限をすぐ確認する
パーミッション、所有者、親ディレクトリを入力して、操作可否や危険な権限を確認できます。
Linux権限の基本
ls -lの先頭10文字は、ファイル種別と所有者・グループ・その他の権限を表します。
| 記号 | 数値 | ファイル | ディレクトリ |
|---|---|---|---|
| r | 4 | 内容を読める | 一覧を読める |
| w | 2 | 内容を変更できる | ディレクトリエントリを変更できる(作成・削除には通常xも必要) |
| x | 1 | 実行できる | 中へ移動・参照できる |
代表的な権限と選び方
数値は「所有者・グループ・その他」の順に、r=4・w=2・x=1を足して表します。まず用途から必要な操作だけを決めます。
| 代表例 | 意味 | 判断の目安 |
|---|---|---|
644 | 所有者だけ書き込み、他は読み取り | 実行しない一般ファイルの代表例 |
755 | 所有者は書き込み可、他も実行・通過可 | 公開ディレクトリや実行物で使うことがある |
600 / 700 | 所有者だけに限定 | 機密ファイルや個人用ディレクトリなど |
777 を設定しても、所有者・ACL・SELinux・親ディレクトリが原因なら解決しません。必要以上の書き込み権限だけが増える可能性があります。chmodとchown・chgrpの違い
chmodは「所有者・グループ・その他に何を許可するか」を変え、chownはファイルやディレクトリの所有者・所有グループを変えます。権限値が正しく見えても、サービスの実行ユーザーと所有者が合っていなければアクセスできないため、先に現在の所有者を確認します。
| やりたいこと | 代表コマンド | 注意点 |
|---|---|---|
| 所有者だけ変更 | chown appuser file | 変更後にサービス実行ユーザーと一致するか確認 |
| 所有者とグループを変更 | chown appuser:appgroup file | 共有運用ではグループ設計も確認 |
| グループだけ変更 | chgrp appgroup file | 対象ユーザーがそのグループに所属しているか id で確認 |
chown -Rやchmod -Rは配下すべてを変更します。設定ファイル・秘密鍵・実行ファイルなど用途の異なるファイルを一括変更しないよう、対象一覧を確認してから実行してください。umaskと新規ファイル・ディレクトリの初期権限
umaskは、新しく作成されるファイルやディレクトリから「付与しない権限」を決める設定です。既存ファイルの権限を直接変更するchmodとは役割が異なります。
| 作成対象 | 基準 | umask 022の一般例 |
|---|---|---|
| 通常ファイル | 666を基準 | 644(rw-r--r--) |
| ディレクトリ | 777を基準 | 755(rwxr-xr-x) |
「666 - 022」のような引き算は覚え方として使われますが、厳密にはビット単位でマスクされます。特に特殊なumask値では単純な十進数の引き算として考えず、実際に作成したファイルをstatで確認します。
安全な変更手順
1. 現在の状態を確認
2. 親ディレクトリも確認
3. 所有者とグループを確認
4. ACLとSELinuxを確認
変更前後に確認すること
値を決めたら、対象だけでなく実行ユーザー・親ディレクトリ・変更後の実効アクセスを確認します。
変更後は対象ユーザーで test -r・test -w・test -x を使い、必要な操作だけが許可されているか確認します。
問題発生時の案内
この作業ガイドは、chmodする前に必要最小限の権限を判断するためのページです。すでにアクセス拒否が起きている場合は、rwxだけでなく、実行ユーザー、親ディレクトリ、ACL、SELinux、マウント状態まで切り分けます。
自分の権限設定を確認
用途別の危険判定、アクセス可否、確認コマンドをまとめて表示します。