chmod 計算機

Unix のファイルパーミッションを 8 進数と rwx で相互変換。

このツールについて

所有者、グループ、その他のユーザーについて読み取り・書き込み・実行にチェックを入れると、8 進数のモードと chmod コマンドが得られます。755 や rwxr-xr-x のようなモードを入力して、何が許可されるかを確認することもできます。setuid、setgid、スティッキービットにも対応しています。

使い方

  1. 755、0644、rwxr-xr-x のようなモードを入力するか、ls -l の 1 列目を貼り付けます。
  2. または、所有者、グループ、その他のユーザーそれぞれについて、読み取り・書き込み・実行にチェックを入れます。
  3. 必要に応じて setuid、setgid、スティッキービットを追加してください。
  4. ファイル名を入力し、chmod コマンドをコピーします。

よくある質問

chmod 755 はどういう意味ですか?
所有者は読み取り・書き込み・実行ができ、グループとその他のユーザーは読み取りと実行ができます。スクリプト、プログラム、フォルダーで一般的なモードです。
644 と 755 の違いは何ですか?
644(rw-r--r--)は通常のファイル向けです。所有者だけが変更でき、誰も実行できません。755 は実行権限を加えたもので、プログラムの実行や、フォルダーを開けるようにするために必要です。
SSH 鍵に 600 が必要なのはなぜですか?
SSH は、他のユーザーが読める秘密鍵を拒否します。600 は自分だけがファイルを読み書きできることを意味し、まさに SSH が確認する条件です。
chmod 777 が適切な場面はありますか?
めったにありません。マシン上のすべてのユーザーがファイルを変更したり置き換えたりできるようになります。777 でしか動かない場合、本当の解決策はたいてい、権限を広げることではなく、正しい所有者(chown)やグループを設定することです。
s と t の文字は何を意味しますか?
所有者またはグループの位置にある s は setuid または setgid です。プログラムがファイルの所有者やグループの権限で実行されるか、フォルダー内の新しいファイルがそのグループを継承します。t はスティッキービットで、/tmp のような共有フォルダーでは、自分のファイルしか削除できなくなります。
chmod で「Operation not permitted」と表示されるのはなぜですか?
ファイルのモードを変更できるのはファイルの所有者か root だけなので、sudo を使うか、先に chown で所有者を直してください。FAT、exFAT、多くのネットワーク共有ではパーミッションがまったく保存されず、代わりにマウントオプションで決まります。Linux では、chattr +i で変更不可(immutable)に設定されたファイルも、フラグを外すまで chmod を拒否します。
Git はファイルのパーミッションを保持しますか?
保持するのは実行ビットだけです。Git はファイルを 100644 か 100755 として記録し、グループやその他を含め、それ以外はすべて無視します。Windows からスクリプトを実行可能にするには、git update-index --chmod=+x script.sh を実行します。共有ドライブなどで、変更していないモードの変更を Git が報告する場合は、そのリポジトリで core.fileMode を false に設定してください。
chmod と chown の違いは?
chmod は、所有者、グループ、その他がファイルに対して何をできるかを変更します。chown は、sudo chown www-data:www-data uploads のように、所有者とグループが誰かを変更します。サービスがどこかに書き込めない場合は、全員に対してモードを広げるより、フォルダーをそのサービスのユーザーやグループに渡すほうが安全です。

chmod の数字の仕組みとは?

各権限には値があります。読み取りは 4、書き込みは 2、実行は 1 です。これらを足して 1 桁の数字にするので、7 は rwx、6 は rw-、5 は r-x を意味します。モードは 3 桁で、所有者、グループ、その他のユーザーの順です。そのため chmod 640 は、所有者に読み取りと書き込み、グループに読み取りのみを許可し、その他には何も許可しません。基数変換ツールでは、各桁を 3 ビットの 2 進数で確認できます。

先頭に 4 桁目を付けると特殊ビットを設定できます。setuid は 4、setgid は 2、スティッキービットは 1 なので、chmod 2775 は 775 に setgid を加えたものです。ls -l の 1 列目では、最初の文字がファイルの種類(フォルダーは d、シンボリックリンクは l、通常のファイルは -)で、その後に 9 文字のパーミッションが続きます。大文字の S や T は、特殊ビットが設定されているのに実行権限がないことを意味し、たいていは間違いです。

chmod の数字と文字(シンボリックモード)の違い

数字は常に 9 ビットすべてを一度に設定します。chmod 644 file は、それまでの設定をすべて置き換えます。文字なら 1 つだけ変更して残りを保てます。chmod u+x deploy.sh は所有者に実行権限を追加し、chmod go-w file はグループとその他から書き込み権限を取り除き、= は chmod o= secret.txt のように権限を正確に指定します。ここではすべての結果が、chmod 755 file と chmod u=rwx,g=rx,o=rx file のように両方の形式で表示されます。

u、g、o、a を省略すると、chmod は全員に変更を適用しますが、umask でブロックされたビットはスキップします。umask は新しいファイルのモードも決めます。一般的な umask 022 では、新しいファイルは 644、新しいフォルダーは 755 になります。自分の umask は umask を実行すれば確認できます。グループで編集できないファイルをチームメンバーが作り続けてしまう場合、後から chmod -R するのではなく、umask を 002 にするのが通常の解決策です。

フォルダーとファイルで別々に chmod する方法

chmod -R 755 dir はすべてのファイルを実行可能にしてしまいますが、それが望ましいことはまれです。代わりに大文字の X を使いましょう。chmod -R u=rwX,go=rX dir は、フォルダーと、もともと実行可能だったファイルにだけ実行権限を与えます。フォルダーを厳密に 755、ファイルを 644 にするには、2 回に分けて実行します。find dir -type d -print0 | xargs -0 chmod 755 の後に、-type f と 644 で同じことを行います。

読み取れるはずのファイルで「Permission denied」が出る場合、たいていは上位のフォルダーが原因です。パスを開くには途中のすべてのフォルダーに実行権限が必要で、フォルダーの中身を一覧表示するには読み取り権限が必要です。700 のフォルダー内にある 644 のファイルは、所有者以外には見えません。Linux では namei -l /path/to/file でパスの各部分のモードが表示されるため、アクセスを妨げているフォルダーを見つけられます。

よく使う chmod パーミッション一覧

よく目にするモードと、それぞれで何ができるか、どこで使われるかをまとめました。

モードrwx誰が何をできるか主な用途
chmod 755rwxr-xr-x所有者は読み取り、書き込み、実行ができます。 グループは読み取りと実行ができます。 その他のユーザーは読み取りと実行ができます。他のユーザーも開けるスクリプト、プログラム、フォルダー
chmod 644rw-r--r--所有者は読み取りと書き込みができます。 グループは読み取りができます。 その他のユーザーは読み取りができます。通常のファイル: 誰でも読めるが、編集できるのは自分だけ
chmod 600rw-------所有者は読み取りと書き込みができます。 グループは何もできません。 その他のユーザーは何もできません。SSH 鍵や .env ファイルなどの非公開ファイル
chmod 700rwx------所有者は読み取り、書き込み、実行ができます。 グループは何もできません。 その他のユーザーは何もできません。自分だけが実行できる非公開のフォルダーやスクリプト
chmod 775rwxrwxr-x所有者は読み取り、書き込み、実行ができます。 グループは読み取り、書き込み、実行ができます。 その他のユーザーは読み取りと実行ができます。グループで共同作業するフォルダー
chmod 664rw-rw-r--所有者は読み取りと書き込みができます。 グループは読み取りと書き込みができます。 その他のユーザーは読み取りができます。グループで共同編集するファイル
chmod 750rwxr-x---所有者は読み取り、書き込み、実行ができます。 グループは読み取りと実行ができます。 その他のユーザーは何もできません。自分とグループだけが使えるプログラムやフォルダー
chmod 640rw-r-----所有者は読み取りと書き込みができます。 グループは読み取りができます。 その他のユーザーは何もできません。サービスのグループが読み取れる設定ファイル
chmod 444r--r--r--所有者は読み取りができます。 グループは読み取りができます。 その他のユーザーは読み取りができます。誰も変更すべきでない読み取り専用ファイル
chmod 777rwxrwxrwx所有者は読み取り、書き込み、実行ができます。 グループは読み取り、書き込み、実行ができます。 その他のユーザーは読み取り、書き込み、実行ができます。誰でも何でもできる: 使い捨てのテスト以外では避ける

うまく動かない、または結果がおかしいですか? このツールの問題を報告