Apacheのホームディレクトリに認証をかける

前回説明した、Apacheでユーザーごとにサイトを構築するにベーシック認証をかけてみます。

ユーザーごとに認証をかけるには?

各ユーザーごとにパスワードをかけるには、1つのパスワードファイルにまとめて置くわけにはいきません。

もしそのようにすれば、ユーザーとパスワードの組み合わせさえ合っていれば、他のユーザーのものでも見ることができてしいます。

これに対応するには、ユーザーのホームディレクトリごとに.htaccessを置くことになります。

手順の確認

手順を確認しておきましょう。

  1. userdir.confで外部設定ファイルを許可する
  2. .htaccessの作成と配置
  3. Apacheの再起動と確認

userdir.confで外部設定を許可

UserDirについては前回説明をしましたので省略します。

認証の外部設定ファイルを許可するには、AllowOverrideAuthConfigの項目を追加します。

AllowOverride AuthConfig

最終的に、次のような記述になっていればOKです。

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir enabled
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
        </Directory>
</IfModule>

.htaccessとパスワードファイルの作成

.htaccessでのベーシック認証についてもこちらで説明をしていますので、ご参考ください。

Apacheで.htaccessを使ってみよう

.htaccessの作成

パスを指定するときに~(チルダ)を付けるとログインしているユーザーのホームディレクトリのパスを返してくれます。

echoコマンドで確認してみましょう。

echo ~
/home/kana

それを利用して、まずはホームディレクトリに.htaccessを作成します。

touch ~/public_html/.htaccess

次に.htaccessを編集します。

ここでは最終的な設定だけ記載します。

AuthType Basic
AuthName "UserDir Basic Auth"
AuthBasicProvider file
AuthUserFile /home/kana/password
Require user kana

パスワードファイルの作成

パスワードファイルの作成をします。

新規作成するときはhtpasswdコマンドに-cをつけます。

ホームディレクトリにpasswordという名前でkanaというユーザーで作成しています。

htpasswd -c ~/password kana

Apacheの再起動と確認

設定反映のためにApacheを再起動します。

apachectl restart

再起動したら動作確認をしましょう。

localhost/~kana

うまく認証の設定ができていればOKです。

あとはユーザーの数だけ同じ作業を行います。

まとめ

Apacheでユーザーのホームディレクトリごとにベーシック認証をかけてみました。

しかし、これだとユーザーを作成するたびに、パスワードファイルを作らなければなりません。

規模が大きくなるなら、CGIやデータベースなどを利用して、手間を減らす工夫がいるでしょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です