前のページの続きです。
ブラウザからデータベースアカウントを入力するのではなく、直接設定ファイルにデータベースに関する情報を記載してアップロードします。WordPress の場合は、wp-config.php にデータベースに関する情報を記載します。
サンプルファイル wp-config-sample.php を wp-config.php に名前を変えて複製し、赤字で示した箇所を以下のように修正します。修正したファイルを FTPで使ってwp-config-sample.php と同じディレクトリにアップロードします。
/** データベース名 */
define('DB_NAME', 'database_name_here');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'username_here');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'password_here');
/** MySQL のホスト名 */
define('DB_HOST', 'localhost');
/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');
/** テーブルの接頭辞 一つのデータベースに複数のWordPress をインストールする場合は、接頭辞を変えます。例 wp2_ */
$table_prefix = 'wp_';
この時、wp-config.php の文字セットが utf8 bomなしから変わらないように注意する必要があります。Windows 等のメモ帳で修正すると、文字コードがShift-JISに変わるので注意して下さい。
このデータベースアカウント情報が記録されたファイルを WordPress の上位ディレクトリにアップロードします。その際、FTPは認証だけでなく、データ通信もSSL/TLS暗号化で保護されている必要があります。
FTPのデータ通信が暗号化で保護出来るかは、ホスティングサービスの善し悪しを判断するポイントの一つです。FTPの通信経路の暗号化で保護する手段としては、SSLで通信経路を暗号化するFTPSと、SSHによるSFTPがありますが、どのようなサービスが提供されているかはまちまちです。後者の SFTP のほうがより高度なファイル、ディレクトリ操作が行えます。
wp-config.php をアップロードした段階でパーミッションを変更しておきます。WordPress の場合は、データベースに関する情報だけが wp-config.php に記載されていますので先に書き込み権限を外しておきます。
FTPクライアントで、 wp-config.php のパーミッションを 400 に設定します。
400で動作する場合は、PHPは FTPでファイルをアップロードしたユーザーと同じ権限で動作しています。
ちなみに 404 にしないと動作しない場合は、PHP は、それぞれのユーザー権限では動作していませんので、サーバー管理者に確認して下さい。
この場合、ホスティングサービスにおいては、セキュリティ上の問題があるシステム、と考えて差しさえありません。本稿の用途では、PHP はそれぞれのユーザー権限で動かすか、同一権限で動かすか、CMS を設置するユーザー(サイト制作者)が選択出来るようにしています。
これはあくまでサーバーを複数のユーザーで共用する場合における話しであって、専用のサーバーの場合は、単にファイルやディレクトリのオーナーをPHPを実行しているユーザーに変更するだけの話しです。そもそも"その他"のユーザーに対してパーミッションを緩める必要がありません。
WordPress のその他のディレクトリ、ファイルに関するパーミッションの設定については以下を参照して下さい。WordPress に限った話しではないことがよく分ると思います。
ファイルパーミッション ~ WordPress の安全性を高める
CMS のアップデートはこのデータベースのアカウント情報が記録されたファイルを除く他のファイル、プログラムを置き換えることになります。バージョンが大きく上がる場合、CMS がそれを検知するとデータベースのテーブルに修正を加える場合があります。
この際、何らかの理由で問題が生じるとコンテンツそのものが破壊されるリスクがあるため、必ず、データベースはバックアップして、元に戻せるようにしておく必要があります。
そのためにはデータベースを自分で操作するための何らかの手段がサーバー管理者から提供されている必要があります。
この様な構造上の仕組みを理解していないと、保守管理もままならないので注意が必要です。WordPress はセキュリティメンテナンスが容易に行えるインタフェイスが提供されていることが人気の理由の一つに挙げられると思います。
この恩恵を受けるには、PHP が、個々のユーザー権限で動作している必要があります。そうでない場合は、WordPress はその都度、FTPのアカウント情報を要求するようになります。
通信経路が暗号化で保護されていない環境下においては、FTPアカウント情報がその都度ネットワークを流れる事になり、逆にリスクが高まります。ホスティングサービズにおいては、PHP や CGI 等が、それぞれのユーザー権限で動作するのかは、共用サーバーに置いては重要なチェックポイントになります。
ちなみに専用サーバーの場合は、単に CMS 全てのディレクトリ、ファイルのオーナーをPHP を動かしているユーザーに変更すれば良いだけの話しなので、これらの問題は発生しません。あくまで、1台のサーバーを複数ユーザーで強要するホスティングサーバーにおける話しであることに注意が必要です。
.ここでのパーミッションは、UNIX系OS(Linux / OS-X等)のディレクトリやファイルの「読み込み」「書き込み」「実行」の権限を指しています。
パーミッションは3桁の数字で表わせます。パーミッション444 の意味は、右から順にオーナー・グループ・その他の順に並びを表わします。
4(オーナー)4(グループ)4(その他)
このオーナーとは、Linuxユーザー(本人=OSアカウント)の事を指しています。その他は、オーナー以外の全てのユーザーを指しています。グループとは、複数のユーザーを特定のグループに所属させることで、そのグループに対して権限を付与することが出来ます。
■補足:グループ作成やグループに対するユーザーの参加登録、ユーザーの作成、登録作業は、システム管理者しか行えない作業です。そのシステム管理者に発行されたユーザーアカウントをホスティングサービスでは提供されていることになります。また、この提供されるユーザーの権限の強さもホスティングサービスによって異なります。共用サーバーでも中には、ログインシェルをもつユーザーアカウント(SSH等)を提供しているものも存在します。
それぞれの数字の意味は以下の通りです。考えたくもないとおもいますが、2の書き込みについて、第三者に PHPなどのサーバーサイド・スクリプトが直接、改編されることを想像してみましょう。ゾッとしますよね。
つまり、パーミッション444の意味は、オーナーも、グループも、その他も、読み込みだけの権限が与えられていることを意味します。
パーミッション604の場合は、最初の6は、読み込みの4と書き込みの2を足し算して6を意味しています。
つまり、オーナーが読み込みと書き込み権限を与えられていて、グループは0なので一切の権限なし。その他のユーザー(システムアカウント)は4なので、読み込みだけが許可されていることを意味します。
このようにファイル、ディレクトリの権限は、0~7の3桁の数字で表わせます。パーミッション777という数字が何を表わしているかというと、
4読み込み+2書き込み+1実行=7
の権限が、それぞれ 7オーナー・7グループ・7その他 に対して付与されていることを表わしています。
STEP6 に続きます