chmod 計算機

クラス 読み取り (r) 書き込み (w) 実行 (x)
所有者
グループ
その他
次へ

Unix のファイルパーミッションは、ユーザー・グループ・その他のそれぞれについて読み取り・書き込み・実行という 3 つ組で構成され、これを 3 桁の 8 進数にきれいにまとめることができます。chmod 755 script.shrwxr-xr-x を表し、所有者はすべての権限を持ち、グループとその他は読み取りと実行ができます。この計算機では、各チェックボックスを切り替えると 8 進数の値がリアルタイムで変わり、逆に 8 進数を貼り付けると rwx の内訳が表示されます。コピーできる正確な chmod コマンドも一緒に確認できます。

chmod パーミッションの仕組み

  1. 1

    9 個のパーミッションビットを切り替える

    3 つのグループ(ユーザー、グループ、その他)× 3 つの権限(読み取り、書き込み、実行)= 9 個のチェックボックス。

  2. 2

    各グループが 1 桁の 8 進数になる

    読み取り = 4、書き込み = 2、実行 = 1。有効にしたいビットを合計します。

  3. 3

    生成される 8 進数と記号表記を読み取る

    例: 755 → rwxr-xr-x、644 → rw-r--r--、600 → rw-------。

  4. 4

    chmod コマンドをコピーする

    このツールは現在のパーミッションに対応する chmod コマンドを表示し、コピーできます。例: chmod 755 ファイル名、chmod u+x ファイル名、chmod -R 755 ディレクトリ。

パーミッションビットの値

ビット ファイルでの意味 ディレクトリでの意味
読み取り 4 内容を表示できる エントリを一覧表示できる
書き込み 2 変更できる エントリの作成・削除・名前変更ができる
実行 1 プログラムとして実行できる 中に入れる(cd で移動して内部にアクセス)

よく使う chmod の値

8 進数 記号表記 主な用途
777 rwxrwxrwx 誰でも書き込み可能、危険であり、ほとんど適切でない
755 rwxr-xr-x スクリプト、バイナリ、ディレクトリ
750 rwxr-x--- 自分と自分のグループだけのスクリプト
700 rwx------ 自分だけのスクリプト(SSH、~/.ssh)
644 rw-r--r-- 公開ドキュメント、画像、HTML
640 rw-r----- グループが読み取れる設定ファイル
600 rw------- 非公開の設定、SSH 秘密鍵、~/.netrc
444 r--r--r-- 読み取り専用で公開するファイル
400 r-------- 非公開の読み取り専用(ほとんど適切でない。600 を使う)

特殊なパーミッション(まれだが重要)

  • setuid (4xxx): 誰が実行しても、そのファイルの所有者として実行されます。/usr/bin/passwd がこれを使っています。
  • setgid (2xxx): ファイルではグループとして実行されます。ディレクトリでは、新しいファイルがそのディレクトリのグループを継承します。
  • スティッキービット (1xxx): ディレクトリでは、ファイルの所有者だけが削除・名前変更できます。/tmp がこれを使っています。

4 桁の 8 進数にはこれらが含まれます。chmod 4755 setuid-binary は 755 に加えて setuid を有効にします。

記号形式の chmod

多くの管理者は、段階的な変更には記号形式を好みます。

  • chmod u+x script、所有者だけに実行権限を追加します。
  • chmod go-w file、グループとその他から書き込み権限を削除します。
  • chmod a+r file、全員(ユーザー、グループ、その他)に読み取り権限を与えます。
  • chmod u=rw,go=r file、これらのビットを正確に設定します。
  • chmod -R 755 directory、再帰的に適用します。

よくある間違い

  • アップロードフォルダーに 777: 「パーミッションを直す」ように見えますが、実際にはサーバーを攻撃者にさらします。より狭い組み合わせを使ってください(例: 正しいグループ所有権を設定した 755)。
  • ディレクトリに chmod -R 644: ディレクトリの実行権限を外してしまうため、cd で中に入れなくなります。ディレクトリには 755、通常のファイルには 644 を使ってください。
  • 0600 と 600: 先頭のゼロは C やシェルで 8 進数を示します。ほとんどの chmod 実装はどちらも受け付けます。
  • umask: 新しいファイルは 666 から umask を引いた値を継承します。デフォルトの umask 022 では、ファイルが 644、ディレクトリが 755 になります。

よくある質問

通常は、所有者が変更でき、ほかの全員が一覧表示と移動をできるようにしたいものです。755 = 所有者は rwx、グループとその他は r-x で、まさにその組み合わせになります。

ほぼ使うべきではありません。777 はシステム上の誰もがそのファイルを変更できるようにします。マルチユーザーのシステムではセキュリティホールになり、シングルユーザーのシステムでは不要です(所有者はすでに 755 で rwx を持っています)。Web アプリに 777 が必要に見える場合、本当の解決策は正しい所有権の設定(chown)かグループへの所属です。

~/.ssh ディレクトリ: 700。秘密鍵(id_rsa、id_ed25519): 600。公開鍵(.pub): 644。authorized_keys: 600。SSH は安全対策として、これより広いパーミッションの鍵を拒否します。

所有者には chown、グループには chgrp を使います。これらは別々のコマンドです。chmod はビットだけを変更し、ファイルを所有するユーザーやグループは変更しません。

関連ツール