chmod 計算機・権限ビジュアライザー

3桁の numeric mode を owner、group、others ごとに可視化します。

このツールはブラウザ内だけで動作します。あなたのPCやサーバー上のファイルは変更しません。numeric mode のみ対応しています。

数値モード
chmod

1桁目は所有者、2桁目はグループ、3桁目はその他のユーザーを表します。

よく使うプリセット

権限グリッド

chmod の各桁は8進数です。読み取りは4、書き込みは2、実行は1です。有効な値を足すと0から7の1桁になります。

権限 所有者グループその他
読み取り 値 4
書き込み 値 2
実行 値 1
合計 4 + 2 + 0 = 6 4 + 0 + 1 = 5 4 + 0 + 1 = 5

意味

  • 所有者 は読み取りと書き込みが可能です。
  • グループ は読み取りと実行が可能です。
  • その他 は読み取りと実行が可能です。

権限文字列

rw-r-xr-x

このツールについて

この chmod 計算機は、655755644 のような Unix/Linux の numeric permission を権限グリッドで確認するためのツールです。owner、group、others が read、write、execute のどれを持っているかを視覚的に確認できます。

このツールはブラウザ内だけで動作します。入力値をサーバーへ送信せず、実際に chmod を実行することもありません。

使い方

  1. owner、group、others の各桁を入力します。
  2. rw-r-xr-x のような権限文字列(rwx 表記)を確認します。
  3. Permission Grid で ON になっている権限を確認します。
  4. グリッドのセルをクリックして権限を切り替えることもできます。
  5. 644755600700664775777 のプリセットを必要に応じて使います。
  6. 実際のファイルやディレクトリに適用する前に warning を確認します。

このページが受け付けるのは 000 から 777 までの3桁 numeric mode だけです。17772775 のような4桁の mode は入力対象外です。

chmod の 4, 2, 1 はなぜ使われるのか

chmod の各桁は8進数です。つまり1桁で 0 から 7 までを表します。各桁は3つの権限ビットから作られます。

Read    = 4
Write   = 2
Execute = 1

これらは2の累乗です。ON になっている値を足すと、その role の1桁になります。

7 = 4 + 2 + 1 = read + write + execute
6 = 4 + 2 + 0 = read + write
5 = 4 + 0 + 1 = read + execute
4 = 4 + 0 + 0 = read only
0 = 0 + 0 + 0 = no permissions

そのため 755 は、owner が 7、group が 5、others が 5 という3つの8進数の桁として読めます。

chmod 755 の意味

chmod 755 は次の意味です。

Owner  = 7 = read + write + execute
Group  = 5 = read + execute
Others = 5 = read + execute

権限文字列(rwx 表記)は次のようになります。

rwxr-xr-x

ディレクトリや実行ファイルでよく使われます。owner は変更でき、group と others は読み取りとディレクトリ移動または実行ができます。

chmod 755 と 644 の違い

755 には owner、group、others の execute 権限が含まれます。ディレクトリでは execute 権限が「そのディレクトリをたどれるか」に関係するため、ディレクトリでよく使われます。

通常のファイルでは 644 がよく使われます。

rw-r--r--

owner は読み書きできます。group と others は読み取りだけです。通常のテキストファイル、設定ファイル、Web アセットなど、実行する必要がないファイルでは 755 より 644 が適していることが多いです。

chmod 664 の意味

chmod 664 は次の意味です。

Owner  = read + write
Group  = read + write
Others = read only

権限文字列(rwx 表記)は次のようになります。

rw-rw-r--

同じ Unix group のユーザーが編集するファイルに使いやすい設定です。world-writable にする設定ではありません。others は読み取りできますが、変更はできません。

ファイルの owner と group を確認する

権限を変える前に、現在の owner、group、mode を確認します。

ls -l app.log

例:

-rw-r--r--  1 appuser  appgroup  1234 May  6 app.log

次のように読みます。

-rw-r--r--  permission
appuser     owner
appgroup    group
app.log     file name

ディレクトリを見るときは次のようにします。

ls -ld logs

ディレクトリの execute 権限は、そのディレクトリをたどれるかどうかに関係します。

自分の username、uid、gid を確認する

現在のユーザー名を確認します。

whoami

現在の user ID、primary group ID、所属グループを確認します。

id

例:

uid=1001(deploy) gid=1001(deploy) groups=1001(deploy),33(www-data)

各項目の意味は次のとおりです。

uid    = user ID
gid    = primary group ID
groups = groups the current user belongs to

グループ名だけを見たい場合は次を使います。

groups

または:

id -nG

group に誰がいるか確認する

多くの Linux サーバーでは、getent group で group entry と明示的なメンバーを確認できます。

getent group www-data

例:

www-data:x:33:deploy,appuser

環境によっては、その group を primary group として持つユーザーが member list に出ない場合があります。

特定のユーザーがどの group に属しているか確認するには、次を使います。

id username

例:

id deploy

getent が使えない環境では、/etc/group が参考になることがあります。

grep '^www-data:' /etc/group

macOS では group membership の扱いが異なります。たとえば次のように確認します。

dscl . -read /Groups/staff GroupMembership

Apache と CLI で同じログディレクトリを使う場合

Apache と CLI コマンドが同じログを書き込むが、実行ユーザーが異なる、という chmod の問題はよくあります。

例:

Apache user: www-data
CLI user: deploy
Log directory: logs/

Apache の実行ユーザーは環境によって異なります。Debian/Ubuntu では www-data、RHEL/CentOS 系では apache のことがあります。権限を変更する前に、実際のプロセスユーザーを確認してください。

避けたい対応:

chmod 777 logs

これは owner と group 以外にも書き込みを許すため危険です。よりよい方法は共有 group を使うことです。

例:

Shared group: app-logs
Members: www-data, deploy
Log directory group: app-logs
Directory permission: group writable

例コマンド:

sudo groupadd app-logs
sudo usermod -aG app-logs www-data
sudo usermod -aG app-logs deploy

sudo chgrp -R app-logs logs
sudo chmod 2775 logs

group membership を変更した後は、ユーザーの再ログインが必要な場合があります。Apache や PHP-FPM などのサービスでは、新しい group membership を反映するためにサービス再起動が必要な場合があります。

chmod 2775 logs の先頭の 2 は setgid bit です。setgid bit は、新しく作られるファイルやディレクトリが親ディレクトリの group を引き継ぐ助けになります。ただし、group write 権限を常に保証するものではありません。最終的な permission は、プロセスの umask やアプリケーション設定にも影響されます。

これは実務上の補足であり、このページの visualizer 入力は引き続き 000 から 777 だけを扱います。

logrotate も確認してください。logrotate が新しいログファイルを作る場合は、create directive も確認します。

create 664 www-data app-logs

chmod だけで直したつもりでも、次のローテーション後に owner、group、permission が変わることがあります。

chmod 777 が危険な理由

chmod 777 は owner、group、others の全員に read、write、execute を許可します。

rwxrwxrwx

特に危険なのは最後の 7 です。owner と group 以外のユーザーにも書き込みを許可します。ファイルなら不要な編集を許す可能性があります。ディレクトリなら、周辺設定によっては不要なファイル作成や置き換えにつながります。

必要最小限の権限を使ってください。多くの場合、解決策は 777 ではなく、正しい owner、正しい group、そしてファイルなら 664、ディレクトリなら 775 のような group-writable な設定です。

プライバシー / ローカル処理

この visualizer はブラウザ内だけで動作します。入力した numeric permission は JavaScript でローカル処理され、サーバーへ送信されません。