chmod パーミッション計算機
開発chmod の8進数、シンボル、3×3パーミッション行列を相互変換 — リアルタイム三方向同期。
リモート URL の取得は行いません。JSON を直接貼り付けてください。
| 読み取り (4) | 書き込み (2) | 実行 (1) | 桁 | |
|---|---|---|---|---|
| 所有者 | | | | 0 |
| グループ | | | | 0 |
| その他 | | | | 0 |
$ chmod 0000 file a= このページの内容
chmod 計算機とは?#
chmod は、ファイルやディレクトリの読み取り、書き込み、実行のパーミッションを設定する Unix コマンドです。そのパーミッションモデルは 3 つのグループ — 所有者、グループ、その他 — で、それぞれが 3 つのオン/オフビットを持ちます。読み取り (4)、書き込み (2)、実行 (1) で、これらが合計されて 0 から 7 の 1 桁になります。3 つの桁を積み重ねると、コマンドラインで打つ 8 進モードになります。755 は「所有者は読み+書き+実行 (7)、グループは読み+実行 (5)、その他は読み+実行 (5)」を意味します。さらに setuid、setgid、sticky ビット用の任意の第 4 の特殊プレフィックス桁もあります。
ここで計算機が本当に有用になる理由は、パーミッション行列(ファイルマネージャで操作するチェックボックス)、8 進数(755)、シンボル文字列(rwxr-xr-x、ls -l が印字するもの)の 3 者間の同値性です。ほとんどの人はこれらの表現の 1 つをよく学び、残りの 2 つにつまずきます。本ページは 3 つすべてを同期させます。どれか 1 つを変えると他の 2 つが即座に更新され、対応する chmod コマンドラインが組み立てられます。
これが重要なのは、間違ったパーミッションビットがデプロイを壊す最も一般的な原因の 1 つだからです — ウェブサーバーが読めないディレクトリ、開きすぎていて SSH に拒否される秘密鍵、x ビットを失った実行ファイル。755 を読んでそれが「ワールドリーダブル、グループとその他は横断できるが書き込めない」を意味すると知るのは、本ツールが翻訳をライブで示すことで鍛える技能です。
使い方#
- すでに持っている表現から作業します。
- パーミッション行列のチェックボックスを操作します(3 行:所有者/グループ/その他、3 列:読み取り/書き込み/実行)。各行の右の桁列が、操作に応じてそのグループの 0〜7 の値を示します。
- または8 進数値を入力します(1〜4 桁、
0oプレフィックス受け付け、例:755、0644、0o600)。 - またはシンボル値を入力します(
rwxr-xr-x、カンマ形式rwx,r-x,r-x、u=rw,go=rのような chmod 節)。
- 特殊ビットが必要なら、特殊ビットフィールドセットの setuid、setgid、sticky を操作します。これらはシンボル形式では所有者の実行スロットを占めます。setuid/setgid には
s/S、sticky にはt/T。 - 結果カードを読みます。
- 組み立てられたコマンドライン、
$ chmod <8進数> file。コピーReady。 - シンボル形式、例:
u=rwx,go=rx。 - 各 who の桁と読み取り/書き込み/実行の付与を示すグループごとの内訳。
- 組み立てられたコマンドライン、
- コピーでコマンドラインを取得します。
- ステータス行が解析を確認するか、8 進数やシンボルの入力が無効だったかを報告します。
主な機能#
- 3 方向ライブ同期。 行列、8 進数、シンボルが互いに更新し合うため、知っているものを入力し、必要なものを読めます。
- 特殊ビットの正しい処理。
setuid、setgid、sticky ビットは、lsが使う小文字/大文字の実行スロット表記(sとS、tとT)を含め、ロスなく処理されます。 - 標準の 4 桁 8 進数。 出力は常に 4 桁(
0755、4755、0000)で、chmodとstatがモードを表示する方法に一致します — 特殊ビットが設定されているときに曖昧な 3 桁形式にはなりません。 - 節形式シンボル。 シェルが受け付ける絶対代入形式(
u=rw,go=rx)を発行し、簡潔さのため同一の隣接グループをマージし、特殊ビットをu+s/g+s/+tとして追加します。 - 寛容な入力解析。
755、0644、0o600、9 文字のピクチャ、カンマ区切りバリアント、chmod 節(u=rwx,go=rx、u+rwx,go-w)を受け付けます。
実例#
デプロイされたウェブディレクトリで最も一般的なモード。8 進数フィールドに 755 と入力します。行列は所有者 読み+書き+実行、グループ 読み+実行、その他 読み+実行にチェックを入れ、シンボルフィールドは rwxr-xr-x を示し、結果カードは次を読みます。
$ chmod 755 file
Symbolic: u=rwx,go=rx
内訳は所有者 7(読み、書き、実行)、グループ 5(読み、実行)、その他 5(読み、実行)を示します。これがディレクトリと実行可能スクリプトの標準モードです。所有者はすべてでき、他の全員は読んで横断できるが変更はできません。
次に 644 — 通常の配信ファイル向けの安全なモード — と比べます。シンボルは rw-r--r-- になり、コマンドは $ chmod 644 file です。所有者は読み書きでき、グループとその他は読むだけです。決定的に、誰も実行を持たないため(ダウンロードしたファイルが誤って実行されることはありません)。プライベート SSH 鍵なら 600(rw-------)と入力します。これは ssh が受け付ける唯一のモードです。
特殊ビットの例:所有者の権限で走らなければならないバイナリ。4755 と入力するとシンボルスロットは rwsr-xr-x になります — 所有者の実行位置の s に注目してください。setuid を示します。コマンドラインは $ chmod 4755 file となり、先頭の 4 が 3 桁形式では表現できない特殊プレフィックス桁(setuid = 4)です — だからこそ本ツールは常に 4 桁を発行します。
よくある質問#
755 と 0755 の違いは何ですか?#
コマンドラインでは等価です — chmod 755 と chmod 0755 は同じモードを生成します。先頭の 0 は単に「特殊ビットなし」を意味するためです。本ツールは常に 4 桁(0755)を表示し、特殊ビットの位置を見えるようにし、stat や ls がモードを報告する方法と一致させます。コマンドラインをコピーするとき、人が打つものなので従来の $ chmod 755 file 形式が使われます。
シンボル出力の s、S、t、T は何ですか?#
実行スロットを占める特殊ビットです。小文字 s(所有者またはグループ位置)は setuid/setgid かつ実行オンを意味します。大文字 S はビットが設定されているが実行がオフことを意味します。小文字 t(その他の位置)は sticky かつ実行オン、大文字 T は sticky 設定で実行オフです。この「大文字=実行なし」の慣習が、ls が余分な列なしで 2 つの状態を区別する方法です。
実際に chmod を実行するとき、8 進数とシンボルのどちらを使うべきですか?#
どちらも動作しますが、挙動が異なります。8 進数(chmod 755 file)はモードを絶対に設定します — すべてのビットが打った通りに設定されます。シンボル(chmod u+x file)は現在のモードを編集します — 言及したビットだけを変え、残りはそのままにします。既知の最終状態が欲しいとき(デプロイスクリプト、Dockerfile)は 8 進数を使い、他を扰さず 1 つのパーミッションを動かしたいときはシンボルを使います。
なぜ SSH は秘密鍵を「bad permissions」エラーで拒否するのですか?#
ssh は秘密鍵がモード 0600(所有者の読み/書きのみ)であることを要求し、それより開いているものは安全でないとして拒否するためです。鍵が 0644 だったりグループ/その他に書き込みがあったりすると、ssh は改ざん可能とみなし、使用を拒否します。$ chmod 600 id_ed25519 で設定するとエラーが消えます。コマンドを実行する前に、ここで正確なモードを検証できます。