chmod 644・755・600・700の違い|Linux権限の数値・rwx早見表
このページの目的:数値を暗記して設定するのではなく、誰にどの操作が必要かを決めて適切なchmod値を選ぶ
このページで分かること
- 644・755・600・700をrwxへ直した意味
- ファイルとディレクトリでxが違う理由
- chmod u+xなど記号形式の使い分け
- 用途から権限値を選ぶ考え方
- 777・666を安易に使わない理由
先に結論
644は実行しない一般ファイル、755は通過や実行が必要なディレクトリ・実行物、600/700は所有者だけに限定したい場合の代表例です。ただし用途・所有者・実行ユーザーを確認して必要最小限にします。
自分の権限を計算・確認
所有者・グループ・その他のrwxを選び、数値と指定ユーザーの操作可否を確認できます。
644・755・600・700早見表
| chmod | rwx | 所有者 | グループ | その他 | 代表的な用途 |
|---|---|---|---|---|---|
644 | rw-r--r-- | 読・書 | 読 | 読 | 実行しない一般ファイル、設定ファイルなど |
755 | rwxr-xr-x | 読・書・実行 | 読・実行 | 読・実行 | ディレクトリ、公開する実行物など |
600 | rw------- | 読・書 | なし | なし | 所有者だけが扱う機密ファイル |
700 | rwx------ | 読・書・実行 | なし | なし | 個人用ディレクトリ、所有者専用の実行物 |
SSHの権限は専用ページへ:
~/.sshやauthorized_keysは所有者、親ディレクトリ、StrictModesも関係します。SSH固有の確認は authorized_keysと.sshの権限ガイドで確認してください。chmod数値の読み方
3桁は左から「所有者」「グループ」「その他」です。それぞれで r=4、w=2、x=1 を足します。
| 数値 | 権限 | 意味 |
|---|---|---|
| 7 | rwx | 4+2+1 |
| 6 | rw- | 4+2 |
| 5 | r-x | 4+1 |
| 4 | r-- | 4 |
| 0 | --- | 権限なし |
chmod 644 app.conf
chmod 755 deploy.sh
実行前に現在値を確認します。
stat -c '%A %a %U:%G %n' app.conf deploy.sh
chmod u+xなど記号形式で変更する方法
chmodは数値だけでなく、「誰に」「どの権限を」「追加・削除するか」を記号で指定できます。既存の他の権限を保ったまま一部だけ変えたい場合は、記号形式の方が意図を表しやすいことがあります。
| 記号 | 意味 |
|---|---|
u / g / o / a | 所有者 / グループ / その他 / 全員 |
+ / - / = | 追加 / 削除 / 指定した権限に設定 |
r / w / x | 読み取り / 書き込み / 実行・通過 |
chmod u+x script.sh
chmod g+w shared.txt
chmod o-r secret.txt
chmod a+r README.txt
例えばchmod u+x script.shは、所有者に実行権限だけを追加します。chmod 755 script.shのように3者すべてを指定し直すのとは違い、対象外の権限をそのまま維持できます。
数値形式と記号形式の使い分け:完成形が明確なら
644や755、既存状態を保ちながら一部だけ追加・削除するならu+xやo-rが分かりやすいです。どちらも実行前後にstatで確認します。ファイルとディレクトリではrwxの意味が違う
| 権限 | ファイル | ディレクトリ |
|---|---|---|
r | 内容を読める | 名前一覧を読める |
w | 内容を書き換えられる | 項目を作成・削除できる(通常はxも必要) |
x | 実行できる | 中を検索・通過できる |
特にディレクトリのx:ファイル自体に読み取り権限があっても、親ディレクトリを通過できなければアクセスできません。
namei -lで経路全体を確認します。用途から権限を選ぶ
| やりたいこと | まず考える設定 | 確認点 |
|---|---|---|
| 所有者が編集し、他ユーザーは読むだけのファイル | 644が候補 | 他ユーザーへの読み取り公開が本当に必要か |
| 複数ユーザーが通過するディレクトリ | 755等が候補 | 一覧表示や書き込みまで必要か |
| 所有者だけが読む機密ファイル | 600が候補 | サービス実行ユーザーが別なら所有者・グループも確認 |
| 所有者専用ディレクトリ | 700が候補 | 他プロセスからの到達が不要か |
「一般的にはこの値」よりも、実際にアクセスするユーザーとグループを先に確認する方が安全です。
id
ls -ld /path /path/to /path/to/target
namei -l /path/to/target
777・666を安易に使わない
777や666は、原因調査をせずにアクセス範囲を広げるため、改ざんや誤操作の余地を増やします。また、ACL・SELinux・noexec・所有者不一致が原因なら、chmodだけでは解決しません。
Permission deniedを直す目的で777にしない:すでに拒否されている場合は Permission deniedの切り分けで、実行ユーザー → 親ディレクトリ → ACL → SELinux → マウント状態の順に確認します。
chmod変更前後の確認コマンド
変更前に現在値と経路を記録し、変更後は実際のユーザーで必要な操作ができるか確認します。
stat -c '%A %a %U:%G %n' /path/to/target
namei -l /path/to/target
id
getfacl -p /path/to/target
sudo -u appuser test -r /path/to/target && echo readable
sudo -u appuser test -w /path/to/target && echo writable
sudo -u appuser test -x /path/to/target && echo executable
変更の原則:必要な主体に必要な操作だけを許可し、変更後に同じユーザー条件で再確認します。再帰的な
chmod -Rは影響範囲が広いため、対象を一覧化してから実行してください。