Chmod計算ツール

Linux/Unixのファイル権限のインタラクティブ計算機。

データはデバイスを離れません
読み取り(4)
書き込み(2)
実行(1)
所有者
グループ
その他
数値
シンボリック ---------
chmod 000 filename

一般的な権限

使い方

  1. 所有者、グループ、その他に対する読み取り、書き込み、実行の権限を設定するためにチェックします。
  2. または、3桁の数値(例: 755)を直接入力します。
  3. シンボリック表記とchmodコマンドがリアルタイムで更新されます。
  4. コマンドをコピーをクリックして、完全なchmodコマンドをコピーします。

権限リファレンス

番号 権限 シンボル
0権限なし---
1実行のみ--x
2書き込みのみ-w-
3書き込み + 実行-wx
4読み取りのみr--
5読み取り + 実行r-x
6読み取り + 書き込みrw-
7読み取り + 書き込み + 実行rwx

よくある質問

chmod 755は何を意味しますか?

755は、所有者が読み取り、書き込み、実行(7)できる一方で、グループとその他は読み取りと実行はできるが書き込みはできない(5)ことを意味します。これはディレクトリとスクリプトの最も一般的な権限です。

644と755の違いは?

644(rw-r--r--)は所有者に読み取り/書き込みを許可し、他のすべての人には読み取りのみを許可します · ファイルの典型です。755(rwxr-xr-x)は実行権限を追加します · ディレクトリとスクリプトの典型です。

ディレクトリにも機能しますか?

はい。数値権限は同じように機能します。ディレクトリの場合、「実行」はディレクトリに入ってその内容にアクセスできることを意味します。

Unixパーミッションモデル:9ビット

Unix系システムのすべてのファイルとディレクトリは、誰が何をできるかを記録する小さな整数である「モード」を持っている。このモデルはSixth Edition Unix(1975年5月)からほぼ変わっておらず、最初のchmodマニュアルエントリはVersion 1 Unix(1971年11月)に登場した。読み取り/書き込み/実行の3ビット3組(合計9ビット)として配置されており、各組はファイルの所有者・グループ・その他全員に対応する:

Owner    Group    Others
r w x    r w x    r w x
4 2 1    4 2 1    4 2 1

各3ビットグループは厳密に8進数1桁だ。3ビットは2³ = 8種類の値(0〜7)をエンコードするからで、ウェイト4・2・1はそれぞれ2²・2¹・2⁰だ。読み取り(4)+書き込み(2)+実行(1)の任意の組み合わせを加算すると、衝突なしに8つの可能なクラス桁が得られる。これが8進数〜シンボリックのマッピング全体だ。chmod 755はつまり、所有者に対してrwx(4+2+1=7)、グループに対してr-x(4+1=5)、その他全員に対してr-xを意味する。

ls -lで表示される10文字の文字列は同じデータにファイルタイプを示す先頭の1列が追加されたものだ:通常ファイルが-、ディレクトリがd、シンボリックリンクがl、キャラクターデバイスがc、ブロックデバイスがb、名前付きパイプがp、ソケットがs。残りの9文字がパーミッショントリプルだ。

シンボリック記法:chmod u+x file

8進数モードは9ビット全部を一度に上書きする。シンボリックモードは非破壊的で、指定したビットのみを変更する。文法は対象 + 操作 + 許可

実用的な例:

数値モードは明示的で冪等だ(chmod 755は常に同じ9ビットを意味する)。シンボリックモードは外科的だ(chmod g+wは1ビットのみを変更する)。本番スクリプトは監査ログの明瞭さのために数値を好む傾向があり、シェルで入力するオペレーターはインクリメンタルな調整にシンボリックを好む傾向がある。

一般的なモードとその用途

モードシンボリック典型的な用途
755rwxr-xr-x公開実行ファイルと標準ディレクトリ(/usr/bin/*、Webドキュメントルート、Gitワーキングツリー)
644rw-r--r--標準的な通常ファイル、設定、ソースコード、ドキュメント
700rwx------プライベートディレクトリ(~/.ssh、他者に見せるべきでない個人ドキュメント)
600rw-------プライベートファイル(~/.ssh/id_rsa~/.gnupg/*、パスワードファイル)
444r--r--r--誰でも読み取り専用、固定の参照データ、Cargoレジストリインデックス
750rwxr-x---所有者フル、グループ読み取り/トラバース、他者なし、グループ共有サービスディレクトリ
777rwxrwxrwxほぼ常に誤りだ。後述。

chmod 777がほぼ常に誤りな理由

ファイルを777に設定すると、誰でも読み取り・書き込み・実行が可能になる。マシン上の任意のユーザー(非特権サービスアカウントや侵害されたプロセスも含む)がファイルの内容を読み取り・修正・実行できる。「とりあえず動くまでchmod 777する」というチュートリアルのアドバイスは、数え切れないほどの実際の侵害の原因となったセキュリティアンチパターンだ:改ざんされた誰でも書き込み可能な設定ファイル、改ざんベクターになる誰でも書き込み可能なWebディレクトリ、ログ偽造を可能にする誰でも書き込み可能なログファイル、任意のコード実行を可能にする誰でも書き込み可能なディレクトリ。

パーミッションエラーが発生している場合、ほぼ常に正しい修正は、アクセスが必要なユーザーが実際にファイルを所有または共同所有するように、ファイルの所有者を(chownで)またはグループを(chgrpで)変更することだ。全員のアクセス制御を削除することではない。

特殊ビット:setuid・setgid・スティッキー

モードの先頭に付加された4番目の8進数桁が3つの特殊ビットを解放する。すべてオリジナルのUnix設計の遺物だ:

ls -lの表示は、これらのビットが設定されている場合に実行文字をsStTに置き換える(大文字はビットが設定されているが基礎の実行ビットが設定されていないことを意味する)。

umask:chmodの逆

chmodは既存のファイルのパーミッションを設定する。umaskは減算マスクとして機能することで、作成するファイルのデフォルトパーミッションを決定する。計算:新しい通常ファイルは666(rw-rw-rw-)、新しいディレクトリは777から始まり、umaskで設定された部分が引かれる。一般的な値:

引数なしでumaskを実行すると現在の値が表示される。シェルの初期化ファイル(~/.bashrc~/.zshrc)または/etc/login.defsに設定するとセッション全体に適用される。

ファイルとディレクトリ:xの異なる意味

同じr/w/xビットでも、ファイルとディレクトリでは微妙に異なる意味を持つ:

再帰的chmodとfindパターン

chmod -R 755 /var/wwwはツリー内のすべてのファイルとディレクトリに同じモードを適用するが、ファイルとディレクトリは異なるモードが必要なためほぼ常に誤りだ(例:ファイルに644、ディレクトリに755)。正しい慣用句はfindを使う:

find /var/www -type f -exec chmod 644 {} +
find /var/www -type d -exec chmod 755 {} +

または同等に、GNUのchmodの大文字Xを使う:chmod -R u=rwX,go=rX /var/wwwはディレクトリと既にどこかに実行権限があるファイルにのみ実行を付与する。通常欲しい結果そのものだ。

シンボリックリンク・ACL・Linuxがモデルを拡張する方法

知っておく価値のある2つの改良:

さらなる質問

SSHキーが「パーミッションが開きすぎている」と拒否されるのはなぜか?

OpenSSHクライアントは、グループまたは他者が読み取れる秘密鍵の使用を拒否する。他者が読めるものはクレデンシャルであるべきではないという前提だ。修正方法はchmod 600 ~/.ssh/id_rsa(およびディレクトリ自体にchmod 700 ~/.ssh)だ。~/.gnupg/や他のほとんどのクレデンシャルストアも同じロジックが適用される。

chmodとchownの違いは何か?

chmodはモードビット(所有者/グループ/その他ができること)を変更する。chown誰が所有者かを変更する。多くの場合、両方が必要だ:「別のユーザーが読めない」ファイルは通常パーミッションを開く必要がなく、アクセスが必要なユーザーが所有する必要がある。まずchown myuser:mygroup fileを試すこと。

ログファイルに666を使うべきか?

ほぼ不要だ。誰でも書き込み可能なログファイルは、任意のプロセス(低権限ユーザーとして実行されている侵害されたサービスを含む)がログエントリを偽造したりログを消去したりできるようにする。標準的なパターンは、ログディレクトリを特定のロググループ(Debianではadm、BSDではwheelなど)が書き込めるようにして関連するサービスをそのグループに追加するか、ファイルの所有権を処理するlogrotate + ロギングデーモン(rsyslog・systemd-journald)を使用することだ。

このツールは特殊ビットを考慮するか?

いいえ。基本9ビット(標準3桁モード)を対象としている。setuid(4xxx)・setgid(2xxx)・スティッキー(1xxx)の場合は先頭の桁を手動で付加する。日常的なchmod作業の大半は3桁モードを使用し、特殊ビットに触れることはない。

サーバーに何か送信されるか?

いいえ。トグル↔8進数↔シンボリック換算は純粋な演算でブラウザーで計算される。ページは一度読み込まれればオフラインでも動作する。

関連ツール

.htaccessジェネレーター クロン式ジェネレーター 無料ファイルハッシュ計算ツール