Apache
以下、ページを公開するユーザーを"user01"とする
apacheユーザーに、user01のプライマリグループを追加
# usermod -G user01 apache
user01のホームディレクトリのパーミッションを710に
$ chmod 710 ~
/etc/httpd/conf/httpd.confを編集
- UserDir disableの行頭に # を付加し、UserDir public_htmlの行頭の # を削除。
- <Directory /home/*/public_html>から</Directory>までの行頭の # を削除
- 2.のAllowOverrideにOptionsを追加
- AddHandler cgi-script .cgiの行頭の # を削除。
ログ
-
デフォルトだとServerRootは/etc/httpdで、ErrorLogやCustomLogはlogs/...となっているので、
/etc/httpd/logs以下になるが、実はこれがシンボリックリンクになっていて、実体は
/var/log/httpdである。
- ローテーションの設定は、/etc/logrotate.d/httpd?
~user01/public_htmlのprivateディレクトリを基本認証によって保護する
-
privateディレクトリに次の内容で.htaccessを作成(認証用のユーザーをa01、パスワードファイルを.htpasswdとする)
AuthType Basic
AuthName "private area"
AuthUserFile /home/user01/public_html/private/.htpasswd
require user a01
-
次の手順で.htpasswdを生成
$ passwd -c .htpasswd a01
以下パスワードを入力
注意)
特定のページを保護する場合は、.htaccessで<Files ファイル名>から</Files>の間に記述する。
その場合のファイル名は、.htaccessを置いたディレクトリからの相対パスでいいようだ。
ただし、AuthUserFileは絶対パスしか許されない(~ユーザー名もだめ)。
~user01/public_htmlのprivate2ディレクトリをダイジェスト認証によって保護する
-
private2ディレクトリに次の内容で.htaccessを作成
(認証用のユーザーをa01、パスワードファイルを.htdigest、レルム名を"private2 area"とする)
AuthType Digest
AuthName "private2 area"
AuthUserFile /home/user01/public_html/private2/.htdigest
require user a01
-
次の手順で.htdigestを生成
$ htdigest -c .htdigest "private2 area" a01
以下パスワードを入力
-
データの確認には、別画面からスーパーユーザーで次のコマンドを実行しておく。
# ngrep -d lo
(ngrepは別途インストールしておく必要がある。)
基本認証との違い)
AuthTypeをDigestとする。
パスワードファイルの作成は、htdigestコマンドを使う。その際、レルム名が必須。
注意)
旧バージョンのapacheでは、パスワードファイルはAuthDigestFileで指定する。
/var/www/cgi-binディレクトリにCGIを作成する
注意点は以下の通り
- httpd.confのAddHandlerの記述は不要
- 拡張子の制限はない。拡張子自体がなくてもよい。
- bashで記述する場合は、先頭に#! /bin/bashを挿入する。
- カレントディレクトリは/var/www/cgi-binになる。
- apacheプロセスはこのディレクトリに書込み権がないので、ファイルの新規作成はできない。
~user01/public_htmlのcgiディレクトリにCGIを作成する
- 次のうちのどちらかの作業を行う。
a. スーパーユーザーで/usr/sbinディレクトリのsuexecファイルの名前をsuexec.offに変更後、apacheを再起動。
b. cgiディレクトリのパーミッションを755に変更(オーナー以外の書込み権を削除)。
-
cgiディレクトリに次の内容で.htaccessを作成
Options +ExecCGI
注意点は以下の通り
- 拡張子は.cgiとする必要がある。
- カレントディレクトリは~user01/public_html/cgiになる。
-
CGIプログラムの実行ユーザーは次の様にになる。
上記 a.の作業を行った場合はapache、行わなかった場合はuser01