開発ツール

chmod 755とは?Linuxパーミッションの読み方を数字と記号で解説

1 分で読了

chmod 755とは、所有者に読み書き実行のすべての権限を与え、グループとその他のユーザーには読み取りと実行だけを許す設定です。ls -lで見るとrwxr-xr-xという表示になります。この3桁の数字は、所有者・グループ・その他という3つの立場に対して、読み取り(4)・書き込み(2)・実行(1)の権限をどう割り当てるかを1桁ずつ表しているだけの、単純な足し算です。

数字1桁は4・2・1の足し算

chmodの権限は3つの立場に対してそれぞれ設定されます。所有者(owner)、グループ(group)、その他(others)です。それぞれの立場について、読み取り・書き込み・実行の3つの権限をオンオフでき、それぞれにビット値が割り当てられています。読み取りは4、書き込みは2、実行は1です。

ある立場に与えたい権限のビット値を足し合わせると、0から7までの1桁の数字になります。読み書き実行すべてなら4+2+1=7、読み取りと書き込みだけなら4+2=6、読み取りと実行だけなら4+1=5、読み取りのみなら4です。この1桁を所有者・グループ・その他の順に3つ並べたものが、755や644といったおなじみの3桁の数字になります。

よく使う組み合わせ

実際によく使われるchmodコマンドと、その意味を一覧にしました。

コマンド8進数記号表記典型的な用途
chmod 600 file600rw-------SSHの秘密鍵(id_rsa)、.envなどの秘密情報ファイル
chmod 644 file644rw-r—r—通常のファイル(HTML、設定ファイル、ログ)。所有者が編集し、全員が読める
chmod 700 dir700rwx------所有者本人しか入れない非公開フォルダ
chmod 755 script.sh755rwxr-xr-x公開スクリプトやディレクトリ。所有者が編集し、全員が実行・移動できる
chmod 775 dir775rwxrwxr-xチーム共有ディレクトリ。所有者とグループが書き込み可能
chmod 777 file777rwxrwxrwx全員が読み書き実行可能。セキュリティ上避けるべき設定

600を検算してみると、所有者は読み取り(4)+書き込み(2)=6、グループとその他は権限なしなので0、0です。755なら、所有者は読み取り(4)+書き込み(2)+実行(1)=7、グループとその他はそれぞれ読み取り(4)+実行(1)=5です。この足し算がわかっていれば、どんな組み合わせも自分で導き出せます。

ディレクトリの場合は少し注意が必要です。実行ビットは「そのディレクトリにcdで入れるかどうか」を、読み取りビットは「lsで中身を一覧できるかどうか」を制御します。読み取りはできるが実行ビットがないディレクトリは、一部のツールでファイル名の一覧だけは見えるのに、cdで中に入ることもファイルの詳細情報を取得することもできないという、混乱しやすい状態になります。

「記号表記」には2つの意味がある

chmodの記号表記という言葉は、実は2つの異なるものを指すことがあり、ここが混同されがちなポイントです。

1つ目は、ls -lコマンドが表示するrwxr-xr-xのような文字列です。これはファイルの権限をその瞬間のスナップショットとして絶対的に表したもので、このツールが表示しているのもこの形式です。

2つ目は、chmodコマンド自身が権限を変更するために使う、まったく別の記号構文です。こちらは既存の権限に対する相対的な操作を表します。たとえばchmod u+x file.shは所有者(u)にだけ実行権限を追加し、chmod go-w fileはグループ(g)とその他(o)から書き込み権限を取り除き、chmod a+r fileは全員(a)に読み取り権限を与えます。u/g/o/aという対象指定と、+/-/=という追加・削除・上書きの演算子を組み合わせて使います。同じ「記号」という言葉でも、ls -lの表示結果と、chmodへの入力コマンドとでは役割がまったく違うので、区別して覚えておくと混乱しません。

自分のパーミッションで試す

読み取り書き込み実行
所有者
グループ
その他
chmod計算ツール
無料、登録不要、どの端末でも使えます。
フルツールを開く

なぜ新規ファイルは644、新規ディレクトリは755になるのか

chmodで一度も権限を変更していないのに、新しく作ったファイルがだいたい644、ディレクトリがだいたい755になっていることに気づいた人もいるはずです。これはumaskという仕組みによるものです。

新規ファイルは666(rw-rw-rw-、安全のため実行ビットは最初から含まれません)、新規ディレクトリは777(rwxrwxrwx)というベースの権限から作成が始まります。そこからシェルのumask値が差し引かれて、実際の権限が決まります。ほとんどのLinuxシステムのデフォルトumaskは022です。666から022を引くと644になり、777から022を引くと755になります。これが、誰もchmodを実行していないのに新規ファイルが644、新規ディレクトリが755になる理由です。

よくある間違いとセキュリティ上の注意

chmod 777を安易に使う。 777はシステム上の誰であっても、そのファイルを読み取り・書き込み・置き換えできる状態にします。これは攻撃者が足がかりを得たときに悪用される典型的な経路で、セキュリティの甘いファイルアップロード機能がそのままWebシェルに変わる古典的な原因です。WordPressやレンタルサーバーのセキュリティ監査ツールは、777の設定を重大な指摘事項として日常的にフラグを立てます。修正はほとんどの場合、実行ファイルやディレクトリなら755、通常のファイルなら644にすることで、信頼できるグループがある場合はさらに750や640まで絞り込みます。

SSHの秘密鍵の権限エラー。 ssh-keygenは秘密鍵をデフォルトで600(所有者のみ読み書き可)で作成します。OpenSSHは、グループやその他から読み取り可能になっている秘密鍵の使用を積極的に拒否し、次のようなメッセージでエラーを返します。

Permissions 0644 for 'id_rsa' are too open.

さらに深刻な場合は次のような警告も表示されます。

UNPROTECTED PRIVATE KEY FILE!

これは実際に再現できるOpenSSHの標準的な挙動です。秘密鍵をどこかからコピーしたり、バックアップから復元したりした直後にこのエラーに遭遇したら、まずchmod 600でファイルの権限を締め直してください。

このツールが扱わない範囲について

正直に書いておくと、setuid(4000)・setgid(2000)・スティッキービット(1000)という特殊な権限ビットは、所有者・グループ・その他という標準の3桁の前に付く、任意の4桁目の数字として表現されます(chmod 4755やchmod 1777のように使います)。このツールはこの4桁目を扱っておらず、標準の3桁の権限セットのみを対象としています。参考までに、setuidはそのバイナリを所有者の権限で実行させるもので/usr/bin/passwdが代表例です。スティッキービットは/tmpのような全員書き込み可能なディレクトリで、あるユーザーが他のユーザーのファイルを削除できないようにするためのものです。

よくある質問

chmod 755とは具体的に何をする設定ですか? 所有者に読み取り・書き込み・実行のすべての権限を与え、グループとその他のユーザーには読み取りと実行のみを許可する設定です。ls -lではrwxr-xr-xと表示され、公開スクリプトやディレクトリでよく使われます。

chmod 644とchmod 755はどう使い分ければいいですか? 644は実行する必要のない通常のファイル(HTML、設定ファイル、テキストファイルなど)に使います。755はスクリプトのように実行が必要なファイル、またはユーザーがcdで移動する必要のあるディレクトリに使います。ディレクトリに実行ビットがないと、その中に入ることができません。

chmod 777がなぜ危険とされるのですか? 777はシステム上の誰でもそのファイルを読み取り・書き込み・置き換えできる状態にしてしまうためです。攻撃者が侵入経路を得た場合、書き込み可能なファイルはそのまま悪用の対象になります。セキュリティ監査では777は重大な指摘として扱われることが多く、実際に必要な権限(多くの場合755か644)まで絞り込むのが基本です。

「Permissions 0644 for ‘id_rsa’ are too open」というエラーが出たらどうすればいいですか? これはOpenSSHが、グループやその他から読み取り可能な秘密鍵の使用を拒否したときに表示するエラーです。ターミナルでchmod 600 id_rsaを実行し、所有者のみが読み書きできる状態に戻せば解決します。ssh-keygenが作成する秘密鍵はもともと600がデフォルトです。

setuidやスティッキービットはこのツールで計算できますか? このツールは所有者・グループ・その他の標準的な3桁のパーミッションを対象としており、setuid・setgid・スティッキービットという4桁目の特殊な権限は扱っていません。これらはchmod 4755やchmod 1777のように、通常の3桁の前に4桁目の数字を追加して個別に指定します。

chmodUnixパーミッションLinuxファイル権限
chmod計算ツール
今すぐフルツールで試してみましょう。
今すぐ試す