パーミッションとは
レンタルサーバーにおけるパーミッション(permission)とは、主にUnix/Linux OSにおけるディレクトリ(フォルダ)やファイルに対するユーザーのアクセス権限のことを指します。中でも、パーミッションを扱うことがあるのがFTP接続です。
パーミッションを変更するケース
一般的なレンタルサーバーでウェブサイトを構築していく場合、ほとんどのユーザーはディレクトリやファイルのパーミッションが何であるかを意識する必要はありません。
パーミッションの変更が必要なケースは、概ね以下の通りです。
- CGIプログラムを設置する
- (一時的に)特定のディレクトリやファイルにアクセスできなくする
- Apacheモジュール版PHPで、PHPにファイルの作成や削除、読み書きをさせる
では、それぞれについて詳しく解説する前に、パーミッションがどのように表されるかを解説します。
パーミッションが表すもの
パーミッションは通常、”644″などの3桁の数値で表されます。
これは、サーバーを利用する様々なユーザーを、大きく3種類に分け、
それぞれについてのアクセス権限を0~7の数値で表しています。
3桁の数値の左から順に
- ファイル/ディレクトリの所有者であるユーザー(User)
- ファイル/ディレクトリの所有者とグループを同じくする他のユーザー(Group)
- ファイル/ディレクトリの所有者とグループの異なる他のユーザー(Other)
のアクセス権であることを示します。
数値が表すアクセス権は以下の通りです。
0 何もできない
1 実行できる
2 書き込みできる
3 実行と書き込みができる
4 読み取りができる
5 実行と読み取りができる
6 書き込みと読み取りができる
7 実行と書き込みと読み取りが全部できる
ほとんどのレンタルサーバーでは、
ディレクトリのパーミッションが”755″ (所有者は何でもできるけど、その他のユーザーは実行と読み取りができる)
ファイルのパーミッションが”644″ (所有者は書き込みと読み取りができるけど、その他のユーザーは読み取りしかできない)
がデフォルトのパーミッションになっています。
パーミッションの変更の具体例
CGIプログラムを設置する
ほとんどのレンタルサーバーでは、CGI実行ファイルは”755″や”705″にする必要があります。具体的にどちらになるかは、ヘルプをご確認いただくか、サポートにお問い合わせください。
(一時的に)特定のディレクトリやファイルにアクセスできなくする
ウェブサイトの一部または全部にアクセスさせたくないが、さりとてファイルを削除したくないという時に、対象のディレクトリやファイルのパーミッションを000にすることで、ウェブアクセスを禁止できます。
Apacheモジュール版PHPで、PHPにファイルの作成や削除、読み書きをさせる
WordPressなどのPHPプログラムでアップロードが行えない場合は、アップロード先ディレクトリのパーミッションが問題のなるケースがあります。モジュール版PHPではアップロード先ディレクトリのパーミッションを”777″にする必要があります。
また、PHPプログラムでアップロードされたディレクトリやファイルが、パーミッションの問題でFTPソフトでは削除できない場合があります。
これは、PHP側でディレクトリやファイルを生成した直後に、chmod()などを使って、ディレクトリなら”777″、ファイルであれば”666″にするようにする処理を入れることで回避できます。
(WordPressであれば、本体のアップロード機能などにはこの処理があるのですが、サードパーティ製のプラグインやテーマにはこの処理が入っていないことがあり、カスタマイズするが必要があります)
これらの問題はモジュール版PHPでのみ発生し、通常CGI版PHP(FastCGIやFPM含む)では問題となりません(パーミッションの変更は不要)。PHPがどのような動作モードになっているかは、php_sapi_name()やphpinfo()でお調べいただくか、サーバー事業者へお問い合わせください。
FTPソフトにおけるパーミッションの変更方法
FTPソフトでのパーミッションの変更方法は、各ソフトウェアのマニュアルを参照ください。
例えば「FFFTP」であれば、変更したいディレクトリやファイルを右クリックし、[属性変更]で変更できます。