PAMを使って、UNIXパスワードをApacheの認証に使うための設定。以下のものが必要。
- Mod_Authnz_External - ユーザ名とパスワードを他のプログラムに渡して認証するためのモジュール
- pwauth - ユーザ名とパスワードを受け取ってPAM認証をする
Mod_Authnz_Externalのインストール
パッケージがあったので、aptでインストールする。
# apt-get install libapache2-mod-authnz-external
モジュールを有効にする。
# a2enmod authnz_external
pwauthのインストール
ビルドするのに libpam0g-dev が必要。
# apt-get install libpam0g-dev
http://www.unixpapa.com/pwauth/ からダウンロードして展開。
$ wget http://www.unixpapa.com/software/pwauth-2.3.6.tar.gz $ tar zxvf pwauth-2.3.6.tar.gz $ cd pwauth-2.3.6/
config.hの修正。
$ vi config.h
コメントアウトしてSHADOW_SUNを無効にする。
/* #define SHADOW_SUN /* Linux, Solaris, IRIX */
PAMを有効にする。
#define PAM /* Linux PAM or OpenPAM*/
SERVER_UIDSをApacheが動作するユーザのuidにする。
#define SERVER_UIDS 33
認証可能とする最小のuidの指定。(どのユーザで認証するかによって変更する必要あり)
#define MIN_UNIX_UID 5000
Makefileの修正。
$ vi Makefile # Settings for author's system (Redhat 6.1) CC=gcc #LIB= -lcrypt <- コメントアウト LOCALFLAGS= -g # For PAM on Redhat Linux LIB=-lpam -ldl <- 有効にする
ビルドしてpwauthをコピーする。
$ make $ sudo mkdir /usr/local/libexec $ sudo cp pwauth /usr/local/libexec/ $ sudo chmod u+s /usr/local/libexec/pwauth
Apacheの設定
Mod_Authnz_Externalで外部プログラムとしてpwauthを使うように、httpd.confに追加する。
AddExternalAuth pwauth /usr/local/libexec/pwauth SetExternalAuthMethod pwauth pipe
認証をするディレクトリで.htaccessで設定する。
全ユーザを認証の対象にする場合。
$ vi .htaccess AuthType Basic AuthName "authentication" AuthBasicProvider external AuthExternal pwauth require valid-user
認証できるユーザをusername1とusername2だけにする場合は最後の1行を変更する。
require user username1 username2
トラックバックURL