インフラ作業支援ラボInfra Support Lab ← 作業ガイド← 戻る

chmod 644・755・600・700の違い|Linux権限の数値・rwx早見表

このページの目的:数値を暗記して設定するのではなく、誰にどの操作が必要かを決めて適切なchmod値を選ぶ

このページで分かること

  • 644・755・600・700をrwxへ直した意味
  • ファイルとディレクトリでxが違う理由
  • chmod u+xなど記号形式の使い分け
  • 用途から権限値を選ぶ考え方
  • 777・666を安易に使わない理由

先に結論

644は実行しない一般ファイル、755は通過や実行が必要なディレクトリ・実行物、600/700は所有者だけに限定したい場合の代表例です。ただし用途・所有者・実行ユーザーを確認して必要最小限にします。

自分の権限を計算・確認

所有者・グループ・その他のrwxを選び、数値と指定ユーザーの操作可否を確認できます。

chmod計算・権限確認ツール

644・755・600・700早見表

chmodrwx所有者グループその他代表的な用途
644rw-r--r--読・書実行しない一般ファイル、設定ファイルなど
755rwxr-xr-x読・書・実行読・実行読・実行ディレクトリ、公開する実行物など
600rw-------読・書なしなし所有者だけが扱う機密ファイル
700rwx------読・書・実行なしなし個人用ディレクトリ、所有者専用の実行物
SSHの権限は専用ページへ:~/.sshauthorized_keysは所有者、親ディレクトリ、StrictModesも関係します。SSH固有の確認は authorized_keysと.sshの権限ガイドで確認してください。

chmod数値の読み方

3桁は左から「所有者」「グループ」「その他」です。それぞれで r=4w=2x=1 を足します。

数値権限意味
7rwx4+2+1
6rw-4+2
5r-x4+1
4r--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者すべてを指定し直すのとは違い、対象外の権限をそのまま維持できます。

数値形式と記号形式の使い分け:完成形が明確なら644755、既存状態を保ちながら一部だけ追加・削除するならu+xo-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を安易に使わない

777666は、原因調査をせずにアクセス範囲を広げるため、改ざんや誤操作の余地を増やします。また、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は影響範囲が広いため、対象を一覧化してから実行してください。

関連ページ