DevToolPal
日本語

chmod 計算機

Unix のファイルパーミッションをチェックボックス、8 進数(755)、記号表記(rwxr-xr-x)の間で変換。setuid・setgid・スティッキービットに対応し、そのまま使える chmod コマンドも生成します。

ローカルで処理、アップロードなし

オプション

パーミッション

読み取り書き込み実行特殊
所有者
グループ
その他

結果

結果はここに表示されます

できること

chmod 計算機は、Unix / Linux のファイルパーミッションを 3 つの書き方の間で変換します。読み取り・書き込み・実行のチェックボックス、755 のような 8 進数、rwxr-xr-x のような記号表記です。対応する chmod コマンドを 8 進数と記号の両方で生成し、誰が何をできるかを説明し、setuid・setgid・スティッキーの特殊ビットにも対応します。処理はすべてブラウザー内で行われます。

使い方

  1. 所有者・グループ・その他のチェックボックスをオンにするか、入力欄にモードを入力します。8 進数(644、0644、4755)、ls -l 形式の文字列(rw-r--r--、またはファイル種別付きの -rw-r--r--)、u=rwx,g=rx,o= や a+x のような chmod の式を入力できます。
  2. チェックボックスと結果は入力に合わせて変わり、チェックボックスを切り替えると同じ表記のままモードが書き換わります。
  3. 「オプション」でファイル名を設定し、ディレクトリツリー全体に適用する場合は「再帰的(-R)」をオンにします。できたコマンドはワンクリックでコピーできます。

よく使うモード

chmod 755 deploy.sh        # rwxr-xr-x
chmod 644 index.html       # rw-r--r--
chmod 600 ~/.ssh/id_ed25519  # rw-------
chmod 1777 /tmp            # rwxrwxrwt
  • 755:ディレクトリ、スクリプト、プログラム。所有者は変更でき、全員が読み取り・実行できます。
  • 644:Web ページや画像などの普通のファイル。
  • 600:SSH 鍵や .env などの非公開ファイル。所有者だけが読めます。他人が読める鍵は SSH が使用を拒否します。
  • 700 は非公開ディレクトリに、775/664 は複数のユーザーでプロジェクトを共有するときに使います。

数字のしくみ

ユーザーの区分ごとに 1 桁の 8 進数があり、読み取り = 4、書き込み = 2、実行 = 1 の合計で表します。ディレクトリでは、読み取りは中の名前の一覧表示、書き込みは中でのファイルの作成と削除、実行はディレクトリに入ることや中のファイルへのアクセスを意味します。

先頭のオプションの桁には特殊ビットが入ります:setuid = 4、setgid = 2、スティッキー = 1。記号表記では実行の文字が置き換わり、setuid と setgid は s、スティッキーは t になります。大文字の S や T は特殊ビットがあるのに実行権限がない状態で、ほぼ間違いなく設定ミスです。

対応する umask も表示します。これはデフォルトの umask が 777 から取り除くビットのことで、umask 022 ならディレクトリは 755、ファイルは 644 になります。

よくある質問

› chmod 755 はどういう意味ですか?

各桁は所有者、グループ、その他のユーザーに対応します。7 = 読み取り(4)+ 書き込み(2)+ 実行(1)、5 = 読み取り + 実行です。つまり 755 は所有者がすべての操作をでき、他の人は読み取りと実行ができる設定で、rwxr-xr-x と書きます。スクリプトやディレクトリの標準的なモードです。

› 644 と 755 の違いは?

644(rw-r--r--)には実行ビットがないので、HTML、画像、設定ファイルなど普通のファイル向けです。755 は全員に実行権限を加えたもので、プログラムの実行やディレクトリへの移動に必要です。

› chmod 777 がよくないのはなぜですか?

777 ではシステム上のすべてのユーザーがファイルを変更・置き換えできます。Web サーバーなら、乗っ取られたどのプロセスでもコードを書き換えられてしまいます。代わりに chown で所有者を直し、ディレクトリは 755、ファイルは 644 にしましょう。

› setuid、setgid、スティッキービットとは?

先頭に付く 4 桁目の 8 進数です。setuid(4)はプログラムを所有者として実行し、setgid(2)はグループとして実行するか、ディレクトリ内の新しいファイルにグループを継承させます。スティッキービット(1)は /tmp のような共有ディレクトリで他人のファイルを削除できないようにします。ls の出力では実行の位置に s や t として表示されます。