chmod 計算ツール — Linux のファイルパーミッション(8 進数 ⇄ rwx)
読み取り・書き込み・実行のチェックボックスから 8 進数のモードと chmod コマンドを求めたり、755、644、rwxr-xr-x を読み解いたりできます。
| 対象 | 読み取り | 書き込み | 実行 | 数字 |
|---|---|---|---|---|
| 所有者(user) | 7 | |||
| グループ | 5 | |||
| その他 | 5 |
chmod 755 deploy.sh
chmod u=rwx,g=rx,o=rx deploy.sh
- 所有者(7):読み取り、書き込み、実行
- グループ(5):読み取り、実行
- その他(5):読み取り、実行
chmod u+x,go-w が既存のモードをどう変えるかを確認できます。u/g/o/a、+ - =、r w x X s t、g=u のようなコピーに対応しています。X には上のディレクトリ設定を使います。
644 (rw-r--r--) → 744 (rwxr--r--)すべてブラウザ内で動作します。入力した内容がどこかに送信されることはありません。 すべての無料ツールを見る.
不具合や改善できそうな点を見つけましたか?いただいたメッセージはすべて読み、すぐに対応します。
この chmod 計算ツールは、Unix や Linux のファイルパーミッションを、チェックボックス、chmod が使う 8 進数(755、644、2775)、ls -l が表示する rwxr-xr-x 形式の文字列の間で変換します。どれか 1 つを変えると他も連動し、そのまま貼り付けられる chmod コマンドと、誰が何をできるかのわかりやすい説明も表示されます。setuid、setgid、スティッキービットにも対応し、同じビットがディレクトリでは別の意味になることも説明します。
u+x,go-w や a=rX のような記号形式の chmod 式を、GNU chmod と同じルールで開始モードに対して評価することもできるので、サーバーで実行する前にコマンドの結果を確認できます。1 つ違いがあります。u/g/o の文字を省略した場合、本物の chmod は umask を適用しますが、このツールは「a」として扱います(umask が 000 の場合と同じ)。ファイルには一切触れない、ただの計算ツールです。
使い方
- 所有者・グループ・その他の読み取り・書き込み・実行のチェックボックスにチェックを入れるか、750 などの 8 進数のモードを入力するか、ls -l の -rw-r--r-- のような文字列を貼り付けます。
- フォルダーのパーミッションを設定する場合は「ディレクトリである」にチェックを入れます。ディレクトリの x は「中に入れる」を意味するので、説明が変わります。
- ファイル名を入力し、必要なら「再帰的」にチェックを入れて、chmod コマンドをコピーします。
- 相対的な変更を確認するには、式の欄に現在のモードと u+x,go-w のような式を入力し、結果を読みます。
- 定番の答えがほしいだけならプリセットを使います。ファイルは 644、ディレクトリとスクリプトは 755、秘密鍵は 600 です。
よくある質問
chmod 755 とはどういう意味ですか?
各桁は読み取り(4)、書き込み(2)、実行(1)の合計で、所有者、グループ、その他の順に並びます。7 = 4+2+1 なので所有者は読み取り・書き込み・実行ができ、5 = 4+1 なのでグループとその他は読み取りと実行はできますが書き込みはできません。文字列で表すと rwxr-xr-x です。ディレクトリや、誰でも実行できるべきスクリプトやプログラムの標準的なモードです。
644 と 755 の違いは何ですか?
違いは実行ビットだけです。644(rw-r--r--)は所有者に読み取りと書き込みを、それ以外の全員に読み取りを許可します。文書、Web ページ、画像、設定ファイルの通常のモードです。755 は全員に実行を加えたもので、ディレクトリに入るにも、スクリプトを実行するにもこれが必要です。普通のファイルに 755 を付けても害はありませんが整っていません。ディレクトリに 644 を付けると、他のユーザーが使えなくなります。
chmod 777 がよくないのはなぜですか?
777 は、システム上のすべてのユーザーに、ファイルの変更や置き換え、ディレクトリ内でのファイルの追加や削除を許可します。Web サーバーでは、別のユーザーとして動いている脆弱なプラグインなど、乗っ取られたプロセスがあればどれでもあなたのコードを書き換えられることになります。「permission denied」エラーの本当の解決策は、たいてい所有者を変える(chown)か、Web サーバーのユーザーをファイルのグループに追加したうえで、755/644 や 775/664 を使うことです。
setuid、setgid、スティッキービットとは何ですか?
任意で付ける 4 桁目(先頭)の 8 進数です。setuid(4)は実行ファイルを所有者の権限で実行させるもので、passwd が /etc/shadow を編集できるのはこの仕組みです。setgid(2)は、実行ファイルに付けるとファイルのグループで実行し、ディレクトリに付けると新しいファイルがディレクトリのグループを引き継ぐので、チームの共有フォルダー(2775)に便利です。スティッキービット(1)をディレクトリに付けると、ファイルを削除できるのはその所有者だけになります。/tmp(1777)がその例です。
SSH 鍵にはどのパーミッションを設定すべきですか?
OpenSSH は、他人が読める秘密鍵を拒否します。~/.ssh/id_ed25519 のような秘密鍵は 600(または 400)、公開鍵(.pub)は 644、~/.ssh/authorized_keys と ~/.ssh/config は 600、~/.ssh ディレクトリ自体は 700 にします。AWS などのクラウド事業者が、渡した .pem ファイルを chmod 400 にするよう指示するのも同じ理由です。
ls -l に大文字の S や T が出るのはどういう意味ですか?
小文字の s や t は、特殊ビットが設定され、その下の実行ビットも設定されていることを意味します。大文字の S や T は、特殊ビットは設定されているのに実行ビットがないことを意味し、たいていは間違いです。誰も実行できないファイルの setuid には何の効果もないので、rwSr--r-- は、誰かが間違ったファイルに chmod u+s を実行したサインであることが多いです。
ファイルとディレクトリでのパーミッションビットの違い
• ファイルの r:内容を読む。ディレクトリの r:中の名前を一覧表示する(ls)。
• ファイルの w:内容を変更する。ディレクトリの w:中のエントリーを作成・削除・名前変更する(ただし x と組み合わせた場合のみ)。ファイルの削除は、ファイルではなくそのディレクトリへの書き込みです。
• ファイルの x:プログラムやスクリプトとして実行する。ディレクトリの x:中に入り(cd)、中のファイルに名前でアクセスする。r があって x がないディレクトリでは、名前の一覧は見られますが、何も開けません。
パーミッションは、あなたに最初に当てはまるクラスに対して判定されます。所有者であれば、グループやその他のビットのほうが寛容でも、所有者のビットだけが適用されます。
記号形式の chmod の書き方
記号形式のモードは、[対象][演算子][権限] の形の節をカンマで 1 つ以上つないだものです。対象は u(所有者)、g(グループ)、o(その他)、a(全員)です。演算子は + で追加、- で削除、= で厳密に設定します。権限は r、w、x、X(ディレクトリか、すでに誰かが実行可能な場合だけ実行を付与)、s(setuid/setgid)、t(スティッキー)、または他のクラスの現在のビットをコピーする u、g、o の 1 文字です。
例:chmod u+x deploy.sh はスクリプトを所有者が実行できるようにします。chmod go-w file は所有者以外の全員から書き込みを削除します。chmod -R a=rX public/ はツリー全体を全員が読めるようにし、ディレクトリには入れて、ファイルは実行不可にします。chmod g=u shared/ はグループに所有者と同じ権限を与えます。
用途別の安全な初期値
• Web ルートのファイル:644、ディレクトリは 755、所有者はデプロイ用ユーザー。アップロード用ディレクトリは所有者を Web サーバーのユーザーにして 755。
• 秘密情報(.env、秘密鍵、認証情報):600、所有者はそれを読むサービスのユーザー。
• リポジトリ内のシェルスクリプト:755。Git が保存するのは実行ビットだけで、ファイルモード 100755 または 100644 として記録されます。Windows では git update-index --chmod=+x で設定します。
• チームの共有ディレクトリ:共通のグループで 2775 にすると、新しいファイルがグループを引き継ぎます。
• 出発点を決めるのは umask です。一般的な 022 なら新しいファイルは 644、ディレクトリは 755 に、077 なら 600 と 700 になります。
関連する無料ツール
- サブネット計算 — 任意の CIDR のネットワーク、ブロードキャスト、ホスト範囲、マスクを計算。VLSM でのネットワーク分割、IPv6 の展開、範囲の重複チェックもできます。
- .gitignore ジェネレーター — 言語、フレームワーク、エディター、OS の .gitignore テンプレートを組み合わせて、1 つのすっきりしたファイルにまとめます。
- cron 式ジェネレーター — ドロップダウンから cron スケジュールを作成するか貼り付けると、わかりやすい日本語で読み、次の 10 回の実行時刻をローカル時刻と UTC で確認できます。無料、ブラウザで動作。
- docker run ⇄ Compose 変換 — docker run コマンドを docker-compose.yml のサービスに、Compose のサービスを docker run に変換します。