chmod計算ツール【無料・登録不要】パーミッションの数値⇔記号を変換|755・644の意味とコマンド生成
Linux のファイルのパーミッション(アクセス権)を計算できる無料ツールです。チェックボックスで「だれに・何を許可するか」を選ぶだけで、「755」のような数値と「rwxr-xr-x」のような記号が同時にわかり、そのまま使える chmod コマンドも作れます。
反対に、数値や ls -l の表示を貼り付けて意味を確かめることもできます。SUID・SGID・スティッキービットといった特殊なビットや、「u+x」「go-w」のような記号モードにも対応しています。入力したデータはお使いのブラウザの中だけで処理され、サーバーには一切送信されません。
| 対象 | 読み取り r(4) | 書き込み w(2) | 実行 x(1) | 数値 |
|---|---|---|---|---|
| 所有者 u |
||||
| グループ g |
||||
| その他 o |
数値(755・4755 など)か記号(rwxr-xr-x)のどちらかに入力すると、ほかの表示がすべて変わります。ls -l の表示(-rw-r--r-- や drwxr-xr-x. など)もそのまま貼り付けられます。
この設定の意味
chmod コマンド
記号モード(u+x、go-w など)で今の設定を変更する
GNU coreutils の chmod と同じ規則で計算します。「X」は対象がディレクトリか、すでにだれかに実行権があるときだけ実行権を付けます。「+x」のように u・g・o・a を省略したときは、umask に含まれるビットは変わりません。
入力したデータはブラウザ内だけで処理し、サーバーへの送信や保存は一切行いません。
使い方
チェックボックスから数値・記号を求める
- 表の「所有者」「グループ」「その他」の行で、許可したい「読み取り」「書き込み」「実行」にチェックを入れます。
- チェックと同時に、「数値」の欄(例:755)と「記号」の欄(例:rwxr-xr-x)が変わります。表の右端には、行ごとの数値も表示されます。
- 「この設定の意味」に、それぞれの対象に何が許可されているかが日本語で表示されます。
「よく使う設定」の 644・755・600・700・664・775 のボタンを押すと、その設定をすぐに選べます。
数値や記号から意味を調べる
- 「数値」の欄に 644 や 4755 などを入力するか、「記号」の欄に rw-r–r– などを入力します。
- 入力と同時に、チェックボックス・もう一方の欄・意味の表示が変わります。
「記号」の欄には、ls -l の表示の左端(-rw-r–r– や drwxr-xr-x など、先頭にファイルの種類が付いた 10 文字)をそのまま貼り付けることもできます。末尾に付く「.」や「+」も読み飛ばします。
chmod コマンドを作る
- 「chmod コマンド」の「ファイル名」の欄に、変更したいファイルの名前を入力します(空欄のときは「file」と表示します)。
- 「数値で」と「記号で」の 2 種類のコマンドが表示されます。使いたいほうの「コピー」を押します。
ファイル名に空白などが入っているときは、自動で「’」(シングルクォート)で囲みます。どちらのコマンドも、ファイルを同じパーミッションにします。
記号モード(u+x など)で変更する
- 「記号モード(u+x、go-w など)で今の設定を変更する」を押して開きます。
- 「記号モード」の欄に、u+x や go-w などを入力します。
- 「適用」を押すと、今の設定にその変更を加えた結果が表示されます(例:644 に u+x を適用すると 744)。
計算は GNU coreutils(多くの Linux に入っているコマンド群)の chmod と同じ規則で行います。結果がファイルとディレクトリで変わる書き方(X など)のために「対象がディレクトリ」のチェックを、u・g・o・a を省略した書き方(+x など)のために「umask」の欄を用意しています。
パーミッションとは?
パーミッションとは、Linux などで、ファイルやディレクトリ(フォルダー)をだれが・どんな操作をしてよいかを決める設定です。1 台のサーバーを複数の人やプログラムが使うときに、ほかの人のファイルを勝手に読んだり書き換えたりできないようにするための仕組みです。
パーミッションは、「だれが」の 3 種類と「何を」の 3 種類の組み合わせで決まります。
| だれが | 記号 | 意味 |
|---|---|---|
| 所有者 | u(user) | ファイルの持ち主。ふつうはファイルを作った人 |
| グループ | g(group) | ファイルに設定されたグループに入っている人 |
| その他 | o(others) | 上のどちらでもない、すべての人 |
「何を」の 3 種類は、ファイルとディレクトリで意味が少し違います。特にディレクトリの「実行(x)」は、プログラムを動かすことではなく、ディレクトリの中のファイルにアクセスすることを表します。
| 権限 | ファイルでの意味 | ディレクトリでの意味 |
|---|---|---|
| 読み取り(r) | 中身を読む | 中のファイルの一覧を見る |
| 書き込み(w) | 中身を書き換える | 中にファイルを作る・削除する |
| 実行(x) | プログラムとして実行する | 中のファイルにアクセスする |
ファイルを削除できるかどうかは、そのファイル自体ではなく、ファイルが入っているディレクトリの書き込み権限で決まります。ファイルを 600 にして自分以外が読み書きできないようにしても、ディレクトリにほかの人の書き込み権限があれば、その人はファイルを削除できます。
パーミッションを変えるコマンドが chmod(チェンジモード)です。たとえば次のコマンドで、deploy.sh を「所有者は読み書き・実行、ほかの人は読み取り・実行」にできます。
chmod 755 deploy.sh
今のパーミッションは、ls -l で確認できます。表示の左端の 10 文字(-rwxr-xr-x など)がパーミッションです。
ls -l deploy.sh
Linux(GNU coreutils の stat コマンド)では、次のように実行すると「755 -rwxr-xr-x」のように数値と記号を並べて表示できます。
stat -c '%a %A' deploy.sh
数値と記号の読み方
記号(rwxr-xr-x)の読み方
ls -l の左端の 10 文字は、1 文字目がファイルの種類、残りの 9 文字が 3 文字ずつ「所有者」「グループ」「その他」のパーミッションです。各 3 文字は「読み取り(r)」「書き込み(w)」「実行(x)」の順に並び、許可されていない権限は「-」になります。
| -rwxr-xr-x の部分 | 意味 |
|---|---|
| – | ファイルの種類(- は通常のファイル、d はディレクトリ、l はシンボリックリンク) |
| rwx | 所有者:読み取り・書き込み・実行 |
| r-x | グループ:読み取り・実行 |
| r-x | その他:読み取り・実行 |
数値(755)の読み方:r=4、w=2、x=1 を足す
数値の表し方では、読み取り=4、書き込み=2、実行=1として、許可する権限の数を足します。この合計を、所有者・グループ・その他の順に 3 桁並べたものがパーミッションの数値です。
- rwx = 4 + 2 + 1 = 7
- r-x = 4 + 0 + 1 = 5
- rw- = 4 + 2 + 0 = 6
- r– = 4 + 0 + 0 = 4
つまり rwxr-xr-x は 755、rw-r–r– は 644 です。各桁は 0〜7 の 8 種類なので、パーミッションの数値は 8 進数です(8 や 9 は使いません)。数値の先頭に 0 を付けた 0755 も 755 と同じ意味です。
特殊なビット(SUID・SGID・スティッキービット)
パーミッションには、ふつうの 9 つの権限のほかに 3 つの特殊なビットがあります。数値では、3 桁の前にもう 1 桁を付けて表します(例:4755)。
| 名前 | 数値 | 記号での表示 | 意味 |
|---|---|---|---|
| SUID(セットユーザーID) | 4000 | 所有者の実行の位置が s | 実行すると、実行した人ではなくファイルの所有者の権限で動く |
| SGID(セットグループID) | 2000 | グループの実行の位置が s | 実行すると、ファイルのグループの権限で動く。ディレクトリに付けると、多くのシステムで、中に作ったファイルがディレクトリと同じグループになる |
| スティッキービット | 1000 | その他の実行の位置が t | ディレクトリに付けると、中のファイルを削除・名前変更できるのが、そのファイルかディレクトリの所有者だけになる(/tmp のような、だれでも書き込めるディレクトリでよく使われる) |
特殊なビットは、実行(x)の位置に重ねて表示されます。実行権もあるときは小文字(s・t)、実行権がないときは大文字(S・T)になります。たとえば 4755 は rwsr-xr-x、4644 は rwSr–r–、1777 は rwxrwxrwt、1776 は rwxrwxrwT です。
なお GNU coreutils の chmod では、ディレクトリに「chmod 755」のような 4 桁以下の数値を指定しても、SUID・SGID は外れずにそのまま残ります。外したいときは「chmod g-s ディレクトリ名」のように記号で指定します。
記号モード(u+x、go-w など)の書き方
chmod では、数値の代わりに「だれに」「どうする」「何を」を記号で書く方法(記号モード)も使えます。今の設定を一部だけ変えたいときに便利です。
| 部分 | 書けるもの |
|---|---|
| だれに | u(所有者)、g(グループ)、o(その他)、a(全員) |
| どうする | +(追加する)、-(取り除く)、=(その権限だけにする) |
| 何を | r、w、x、X(ディレクトリか、すでにだれかに実行権があるときだけ x)、s(SUID・SGID)、t(スティッキービット) |
たとえば「u+x」は所有者に実行権を追加、「go-w」はグループとその他から書き込み権を取り除く、「a=r」は全員を読み取りだけにします。カンマで区切ると、「u=rwx,g=rx,o=」のように複数の変更をまとめて書けます。次のコマンドは、deploy.sh の所有者に実行権を追加します(ほかの権限はそのまま)。
chmod u+x deploy.sh
「+x」のように u・g・o・a を省略すると、全員(a)を指定したのとほぼ同じですが、umask(次の項目)に含まれる権限は変わりません。たとえば umask が 022 のとき、「chmod +w」では所有者にだけ書き込み権が付き、グループとその他には付きません。
新しいファイルのパーミッションを決める umask
umask(ユーマスク)は、新しくファイルやディレクトリを作るときに外す権限を表す値です。よく使われる値は 022(グループとその他の書き込み権を外す)です。今の umask は、次のコマンドで確認できます。
umask
ふつうのプログラムは、新しいファイルを 666(rw-rw-rw-)、mkdir コマンドは新しいディレクトリを 777(rwxrwxrwx)で作ろうとし、そこから umask の権限が外されます。umask が 022 なら、ファイルは 644(rw-r–r–)、ディレクトリは 755(rwxr-xr-x)になります。
よく使う設定と使い分け
よく使われるパーミッションと、使い分けの例です。迷ったときは、必要な人に・必要な権限だけを与えるように選びます。
| 数値 | 記号 | 意味 | 使い道の例 |
|---|---|---|---|
| 644 | rw-r–r– | 所有者は読み書き、ほかの人は読み取りだけ | HTML・画像・設定ファイルなど、ふつうのファイル |
| 755 | rwxr-xr-x | 所有者は読み書き・実行、ほかの人は読み取り・実行 | ディレクトリ、だれでも実行してよいスクリプト |
| 600 | rw——- | 所有者だけが読み書きできる | SSH の秘密鍵、パスワードなどを書いた設定ファイル |
| 700 | rwx—— | 所有者だけが読み書き・実行できる | ~/.ssh ディレクトリ、自分専用のディレクトリやスクリプト |
| 664 | rw-rw-r– | 所有者とグループは読み書き、その他は読み取りだけ | グループのメンバーで一緒に編集するファイル |
| 775 | rwxrwxr-x | 所有者とグループは読み書き・実行、その他は読み取り・実行 | グループのメンバーで一緒に使うディレクトリ |
SSH の鍵のパーミッション
OpenSSH の ssh コマンドのマニュアル(ssh(1) の FILES の項)では、次のパーミッションが勧められています。特に秘密鍵は、ほかの人がアクセスできる状態だと ssh がその鍵を無視すると書かれているため、パーミッションが広すぎると鍵を使ったログインができません。
| ファイル | マニュアルの説明 | 数値にすると |
|---|---|---|
| ~/.ssh(ディレクトリ) | 所有者は読み書き・実行、ほかの人はアクセスできない | 700 |
| 秘密鍵(~/.ssh/id_ed25519、~/.ssh/id_rsa など) | 所有者は読み取りでき、ほかの人はアクセスできない | 600(読み取りだけなら 400) |
| ~/.ssh/authorized_keys | 所有者は読み書き、ほかの人はアクセスできない | 600 |
| ~/.ssh/config | 所有者は読み書き、ほかの人は書き込みできない | 600(または 644) |
~/.ssh ディレクトリを 700 にするコマンドです。
chmod 700 ~/.ssh
秘密鍵を 600 にするコマンドです(鍵のファイル名はお使いのものに置き換えてください)。
chmod 600 ~/.ssh/id_ed25519
サーバー側の authorized_keys(ログインを許可する公開鍵の一覧)を 600 にするコマンドです。
chmod 600 ~/.ssh/authorized_keys
777 を避けるべき理由
777(rwxrwxrwx)は、サーバーを使えるすべての人とプログラムに、読み書き・実行のすべてを許可する設定です。「権限エラーで動かないので、とりあえず 777 にしたら動いた」という使い方をされがちですが、次のような危険があります。
- ファイルを書き換えられる:だれでも中身を変えられるので、スクリプトに悪意のある命令を書き足されると、次にそのスクリプトを動かした人の権限で実行されてしまいます。
- ディレクトリの中身を消されたり、置き換えられたりする:ディレクトリの書き込み権は「中にファイルを作る・削除する」権限なので、777 のディレクトリでは、だれでも中のファイルを削除したり、別のファイルに置き換えたりできます。
- 被害が広がる:Web アプリなど、サーバー上のどれか 1 つのプログラムが乗っ取られたとき、777 のファイルはそのプログラムからも書き換えられてしまいます。
権限エラーが出たときは、777 にする前に「どのユーザーが・何をしようとして失敗したのか」を確認し、そのユーザーを所有者やグループにする(chown・chgrp コマンドで変更する)か、必要な権限だけを追加します。たとえばグループのメンバーに書き込ませたいだけなら、775 や 664 で足ります。だれでも書き込めるディレクトリがどうしても必要なときは、/tmp のようにスティッキービットを付け、ほかの人のファイルを削除できないようにします。
このツールでは、777 や「その他」に書き込み権がある設定、SUID・SGID が付いた設定を選ぶと、注意のメッセージを表示します。
よくある質問
入力したデータは保存されませんか?
保存されません。計算はすべてお使いのブラウザの中で行われ、サーバーへの送信も保存も行いません。ページを閉じると入力内容は消えます。
Windows の Git Bash で chmod しても ls -l の表示が変わらないのはなぜですか?
Windows のファイルシステム(NTFS)は、Linux とは別の仕組みでアクセス権を管理しているためです。このサイトで Git Bash を使って試したところ、chmod 600 を実行してもエラーにはならず、ls -l の表示は -rw-r–r– のまま変わりませんでした。パーミッションの動きを確かめるときは、Linux のサーバーや仮想マシンで行ってください。
ディレクトリの中のファイルをまとめて変更するには?
chmod に -R を付けると、ディレクトリの中も含めてまとめて変更できます。ただし「chmod -R 755」のように数値で指定すると、中のふつうのファイルにまで実行権が付いてしまいます。大文字の X を使うと、ディレクトリと、もともと実行権があったファイルにだけ実行権を付けられます。次のコマンドは、public_html の中のディレクトリを 755、ふつうのファイルを 644 にそろえます(もともと実行権があったファイルは 755 になります)。
chmod -R u=rwX,go=rX public_html
chmod +x と chmod u+x の違いは?
chmod u+x は所有者だけに実行権を付けます。chmod +x は全員に実行権を付けますが、umask に含まれる権限は除かれます。umask が 022 のように実行権(1)を含まない値なら、全員に実行権が付きます。自分だけが実行するスクリプトなら、u+x のほうが必要な分だけの設定になります。
大文字の S や T が表示されるのはどういう意味ですか?
特殊なビット(SUID・SGID・スティッキービット)は付いているのに、その位置の実行権(x)が付いていないことを表します。たとえば 4644 は rwSr–r– と表示されます。実行権があれば小文字の s・t になります。
数値は 3 桁と 4 桁のどちらで書けばよいですか?
特殊なビットを使わないときは、3 桁(755 など)で十分です。4 桁の 0755 も同じ意味になります。特殊なビットを付けるときは、4755 のように 4 桁で書きます。このツールでは、特殊なビットがないときは 3 桁、あるときは 4 桁で表示します。
関連する記事・ツール
- 基数変換ツール【無料・登録不要】2進数・8進数・10進数・16進数を相互変換|2の補数対応
- Gitコマンド検索【無料・登録不要】やりたいことから探せるGitコマンド辞典|取り消し・ブランチ・push
- Cron式生成・解説ツール【無料・登録不要】crontabの書き方を日本語で確認|次回実行日時も表示
- サブネット計算ツール【無料・登録不要】IPv4のネットワークアドレス・ホスト数をCIDRから計算