仕組み
Unix と Linux では、各ファイルには 3 つのクラス(所有ユーザー、グループ、その他(「others」))の権限があります。各クラスには 3 つの権限(読み取り r、書き込み w、実行 x)を持てます。chmod はそれらを変更するコマンドです。
権限は同等の 2 通りで表されます。数値(8 進)と記号です。8 進では各クラスが 0〜7 の 1 桁で、4(読み)+ 2(書き)+ 1(実行)の合計です。記号では 9 文字で書き、たとえば rwxr-xr-x です。
先頭の 4 つ目の桁が特殊ビットを制御します。setuid(4)、setgid(2)、sticky(1)です。このツールは双方向に変換します。チェックボックスで権限を選ぶと 8 進・記号表記・コピー用コマンドが得られ、値を貼り付けるとその内容が反映されて表示されます。
例
755rwxr-xr-x所有者は読み・書き・実行ができ、グループとその他は読み取りと実行のみです。ディレクトリやスクリプトで典型的です。644rw-r--r--所有者は読み書き、グループとその他は読み取りのみです。データファイルや設定ファイルで一般的です。600rw-------所有者だけが読み書きでき、他の誰もアクセスできません。秘密鍵に推奨されます。4755rwsr-xr-x最初の桁の 4 は setuid を有効にします。プログラムはファイル所有者の権限で実行されます。ユースケース
- スクリプトに実行権限を与える(chmod 755)、または機密データを含むファイルを制限する(chmod 600)。
- チュートリアルの 8 進数と ls -l の表示との間を、ビットを手計算せずに変換する。
- サーバーで実行する前に、コマンドが実際にどの権限を与えるかを理解する。
よくある質問
なぜ 755 は 3 桁だけで、ときどき 4 桁になるのですか?
3 桁はユーザー・グループ・その他を表します。省略可能で先頭にある 4 桁目は特殊ビット(setuid、setgid、sticky)を制御します。0 のときは省かれるため、0755 と 755 は同じです。
rwsr-xr-t の s と t は何を意味しますか?
これらは特殊ビットを示すために x を置き換えます。ユーザーブロックの s は setuid、グループブロックでは setgid、その他ブロックの t は sticky ビットです。大文字(S/T)ではビットは有効ですが実行権限はありません。
chmod 755 と chmod u=rwx,g=rx,o=rx の違いは何ですか?
違いはありません。まったく同じ権限になります。8 進形式はより簡潔で、記号形式はより読みやすいです。chmod は u+x(所有者に実行を追加)のような相対的な変更も、他をそのままにして受け付けます。
SSH の秘密鍵にはどの権限を設定すべきですか?
600(rw-------)。グループやその他が読める場合、SSH は秘密鍵の使用を拒否します。~/.ssh フォルダーは通常 700 を使います。