🔰はじめての方へ

PHPファイルの権限(パーミッション)644・フォルダ700って何?ターミナルのls -alで見るパーミッション入門

PHP
記事内に広告が含まれています。
スポンサーリンク

パーミッション。

サイトを作っていて、今まで一度も気にしたことがありませんでした。

仕事でLPを作っているときに、

「あるフォルダのPHPファイルは基本的に644なのに、ほかのフォルダでは700が多くなっている」

という指摘をもらいました。

644と700が何を指しているのか、まったくわかりませんでした…(数字だけ言われても…)

調べてみると、これはパーミッション(ファイル権限)の話で、サイトを公開するなら知っておかなくてはいけないことだとわかりました。

同じように数字だけ見て固まってしまった方に届いたらいいなと思い、調べたことと、教えてもらった確認方法をまとめていきます!

この記事は、私がWeb制作の中で指摘を受けて、調べて理解した内容をまとめたものです。
サーバーの種類や設定によって推奨される値が変わることがあるため、実際に変更するときは契約しているサーバーの公式マニュアルもあわせて確認しています。

パーミッション(ファイル権限)とは?

パーミッションは、ファイルやフォルダに対して「誰が」「何をしていいか」を決めた設定です。

サーバーの中にあるファイルは、どれもこの権限を持っています。

エックスサーバーの公式マニュアルでも、フォルダやファイルに対するユーザーのアクセス権限と説明されていました。

家の鍵にたとえると、家族は出入りできるけれど、お客さんはリビングまで、知らない人は入れない…というような決まりを、ファイル1つ1つに付けているイメージです。

この決まりを3桁の数字で表したものが、644や700です。

644・755・700…3桁の数字の意味

数字の意味を、順番に解説していきます。

3桁はそれぞれ「誰に対する権限か」を表している

3桁の数字は、左から順に次の3者に対する権限です。

桁対象イメージ
1桁目所有者(オーナー)ファイルを作った本人(サーバーの契約者など)
2桁目グループ所有者と同じグループに属するユーザー
3桁目その他それ以外のすべて(Webサイトを見に来る人の側も含む)

たとえば644なら、所有者が「6」、グループが「4」、その他が「4」という意味になります。

数字は「読む・書く・実行する」の足し算

1桁ごとの数字は、次の3つの権限の合計で決まります。

権限記号数字意味
読み取りr4中身を見られる
書き込みw2中身を書き換えられる
実行x1プログラムとして実行できる(フォルダの場合は中に入れる)

つまり、

6=4+2(読む+書く)、7=4+2+1(全部OK)、5=4+1(読む+実行)、0=何もできない

ということです。

この足し算の仕組みがわかれば、ほかの数字も同じように読めます。

よく見かける数字の一覧

数字記号表示意味よく使われる場所
644rw-r–r–所有者は読み書き、ほかは読むだけHTML・PHP・CSS・画像などのファイル
755rwxr-xr-x所有者は全部、ほかは読む・入る(実行)だけフォルダ
705rwx—r-x755からグループの権限を外したものフォルダ(サーバーによって推奨)
600rw——-所有者だけが読み書きできる外から見られたくないデータファイル
700rwx——所有者だけが全部できる、ほかは何もできない自分専用のフォルダなど
777rwxrwxrwx誰でも読み書き実行できる調べた範囲では、公開サーバーでは避けるのが一般的

参考として、エックスサーバーの公式マニュアルに載っている推奨値は、

フォルダが755か705、

.htmlや.phpなどのファイルが644、

.htaccessも644となっていました(2026年9月時点で確認)。

詳しくは公式ページに表でまとめられています。

パーミッション|エックスサーバー マニュアル

ターミナルの「ls -al」でパーミッションを確認する方法

パーミッションの見方は、ターミナルでls -alというコマンドを使う方法を簡単に教えてもらいました。

Macのターミナルでの流れを書いていきます。

【手順①】ターミナルでプロジェクトのフォルダに移動する

まず、確認したいファイルが入っているフォルダに移動します。

私の場合は、GitHubで管理しているプロジェクトのフォルダに移動しました。

移動にはcd(チェンジディレクトリ)というコマンドを使います。

cd ~/GitHub/sample-lp

「~/GitHub/sample-lp」の部分は、自分のパソコンのフォルダの場所に置き換えます。

【手順②】ls -al を入力する

フォルダに移動できたら、次のコマンドを入力してEnterを押します。

ls -al

lsはフォルダの中身を一覧で表示するコマンドです。

-aは隠しファイル(.htaccessや.gitなど、名前が「.」で始まるもの)も表示する、-lは権限などの詳しい情報も表示する、というオプションです。

【手順③】表示された内容を読む

たとえば、次のような表示が出てきます(名前はすべて仮のものです)。

drwxr-xr-x   6 sample  staff   192  9 28 10:00 .
drwxr-xr-x  12 sample  staff   384  9 28 10:00 ..
drwxr-xr-x  12 sample  staff   384  9 28 10:00 .git
-rw-r--r--   1 sample  staff   512  9 28 10:00 .htaccess
drwx------   4 sample  staff   128  9 28 10:00 sample-area
-rw-r--r--   1 sample  staff  2048  9 28 10:00 index.php

見るのは一番左の10文字です。

1文字目は種類を表していて、dならフォルダ(ディレクトリ)、-ならファイルです。

残りの9文字を3文字ずつ区切ると、所有者・グループ・その他の権限になります。

表示種類所有者グループその他数字にすると
-rw-r–r–ファイルrw-(6)r–(4)r–(4)644
drwxr-xr-xフォルダrwx(7)r-x(5)r-x(5)755
drwx——フォルダrwx(7)—(0)—(0)700

「-」はその権限がないという意味なので、r=4、w=2、x=1として足し算すると数字に変換できます。

そのあとに続く「sample」が所有者の名前、「staff」がグループの名前、その後ろがファイルサイズ・更新日時・ファイル名です。

上の例だと、sample-areaというフォルダだけが700になっていることが読み取れます。

・「.」は今いるフォルダ自身、「..」はひとつ上のフォルダを表しています。
・Macの場合、権限の最後に「@」や「+」が付いていることがありますが、これは追加の情報があるという印で、3桁の数字の読み方には関係しないようです。

指摘された「PHPは644、ほかのフォルダは700」を読み解く

ここまでの内容を使って、もらった指摘を読み直してみました。

644のPHPファイルは、所有者は読み書きでき、ほかの人は読むだけの状態です。

これはサーバーの推奨値と同じで、よく使われる設定です。

一方で700のフォルダは、所有者以外は中に入ることもできない状態です。

調べた範囲では、サーバーの仕組みによっては、Webサイトを表示する側(Webサーバー)が「その他」として扱われることがあり、フォルダが700だと中の画像やCSSが読み込めず、403 Forbiddenなどのエラーになる可能性があるようです。

逆に、権限を広げすぎた777のような状態は、誰でも書き換えられるので改ざんのリスクがあると多くの解説で書かれていました。

フォルダごとに数字がバラバラだと、表示されない部分が出たり、セキュリティ的に弱いところができたりする可能性があるため、揃えておく必要があるということのようです。

パーミッションの変更はサーバー側で確認する

パーミッションの変更は、サーバー側で行う必要があるようです。

どうしてパソコンの中で直すだけではダメなのかも調べました。

パソコンの権限がそのままサーバーに反映されるとは限らない

ls -alで見ていたのは、自分のパソコンの中にあるファイルの権限です。

実際にWebサイトとして動いているのは、サーバーにアップロードされたファイルなので、見るべきなのはサーバー上の権限です。

調べた範囲では、アップロードの方法によって権限の扱いが変わるようです。

たとえばGitは、ファイルについては実行権限があるかないか(644か755か)程度しか記録しておらず、700のような細かい違いやフォルダの権限は記録しない仕組みになっているようです。

FTPソフトの場合も、ソフトの設定によって元の権限を引き継いだり、サーバー側の初期値になったりするとのことでした。

なので、最終的にはサーバー上で確認して、必要なら変更するという流れになります。

サーバーで権限を変更する方法

調べたところ、変更する方法は主に次の3つがありました。

1つ目は、レンタルサーバーのファイルマネージャを使う方法です。

ブラウザからサーバーのファイルを操作できる画面で、ファイルやフォルダを選んでパーミッションを変更するメニューから数字を入力します。

ターミナルを使わずに、画面で確認しながら操作できる方法です。

2つ目は、FileZillaなどのFTPソフトを使う方法です。

サーバー側のファイルを右クリックすると、パーミッションを変更する項目があり、数字やチェックボックスで設定できます。

3つ目は、SSHでサーバーに接続してchmodコマンドを使う方法です。

chmodは権限を変更するコマンドで、次のように「chmod 数字 ファイル名(フォルダ名)」の形で使います。

chmod 644 index.php
chmod 755 sample-area

変更したあとに、サーバー上でもう一度ls -alを入力すると、権限が変わったかどうかを確認できます。

chmodはパソコンのターミナルでも使えますが、パソコン側で変更しても、上で書いたとおりサーバーに反映されるとは限りません。
また、フォルダの中身をまとめて変更するオプションもありますが、対象を間違えると全体の権限が変わってしまうため、慣れないうちは1つずつ変更して確認する方法もあります。

サイトを作るときに知っておきたいパーミッションの注意点

最後に、今回調べた中でサイト制作のときに意識しておきたいと思ったことをまとめておきます。

基本の数字を覚えておく
ファイルは644、フォルダは755(または705)が、調べた範囲ではよく使われる組み合わせでした。

700や600は「所有者だけ」の設定
外から見られたくないデータには使われますが、表示させたいページや画像のフォルダが700になっていると、表示されない可能性があります。

777は避けるのが一般的
誰でも書き換えられる状態になるため、改ざんのリスクがあるとされています。

確認するのはサーバー上の権限
パソコンの権限とサーバーの権限は同じとは限らないので、アップロード後にサーバー側で確認します。

推奨値はサーバーによって違うことがある
契約しているサーバーの公式マニュアルに推奨値が載っていることが多いので、そちらに合わせます。

まとめ

パーミッションは、ファイルやフォルダごとに「誰が何をしていいか」を決めた設定で、644や700といった数字は、所有者・グループ・その他それぞれの「読む(4)・書く(2)・実行(1)」を足し算したものでした。

ターミナルでプロジェクトのフォルダに移動してls -alを入力すると、左端の10文字で権限を確認できます。

ただ、Webサイトとして大事なのはサーバー上の権限なので、変更や確認はサーバーのファイルマネージャやFTPソフト、SSHで行う必要がありました。

私は指摘をもらうまで、パーミッションを一度も気にしたことがありませんでした。

数字だけ見るとわからなかったものも、足し算の仕組みを知ると読めるようになります。

同じところでつまずいた方の参考になればうれしいです。