Apache

以下、ページを公開するユーザーを"user01"とする

apacheユーザーに、user01のプライマリグループを追加

# usermod -G user01 apache

user01のホームディレクトリのパーミッションを710に

$ chmod 710 ~

/etc/httpd/conf/httpd.confを編集

  1. UserDir disableの行頭に # を付加し、UserDir public_htmlの行頭の # を削除。
  2. <Directory /home/*/public_html>から</Directory>までの行頭の # を削除
  3. 2.のAllowOverrideにOptionsを追加
  4. AddHandler cgi-script .cgiの行頭の # を削除。

ログ

~user01/public_htmlのprivateディレクトリを基本認証によって保護する

  1. privateディレクトリに次の内容で.htaccessを作成(認証用のユーザーをa01、パスワードファイルを.htpasswdとする)
    AuthType Basic
    AuthName "private area"
    AuthUserFile /home/user01/public_html/private/.htpasswd
    require user a01
  2. 次の手順で.htpasswdを生成
    $ passwd -c .htpasswd a01
    以下パスワードを入力
注意)
特定のページを保護する場合は、.htaccessで<Files ファイル名>から</Files>の間に記述する。
その場合のファイル名は、.htaccessを置いたディレクトリからの相対パスでいいようだ。
ただし、AuthUserFileは絶対パスしか許されない(~ユーザー名もだめ)。

~user01/public_htmlのprivate2ディレクトリをダイジェスト認証によって保護する

  1. private2ディレクトリに次の内容で.htaccessを作成
    (認証用のユーザーをa01、パスワードファイルを.htdigest、レルム名を"private2 area"とする)
    AuthType Digest
    AuthName "private2 area"
    AuthUserFile /home/user01/public_html/private2/.htdigest
    require user a01
  2. 次の手順で.htdigestを生成
    $ htdigest -c .htdigest "private2 area" a01
    以下パスワードを入力
  3. データの確認には、別画面からスーパーユーザーで次のコマンドを実行しておく。
    # ngrep -d lo
    (ngrepは別途インストールしておく必要がある。)
基本認証との違い)
AuthTypeをDigestとする。
パスワードファイルの作成は、htdigestコマンドを使う。その際、レルム名が必須。
注意)
旧バージョンのapacheでは、パスワードファイルはAuthDigestFileで指定する。

/var/www/cgi-binディレクトリにCGIを作成する

注意点は以下の通り
  1. httpd.confのAddHandlerの記述は不要
  2. 拡張子の制限はない。拡張子自体がなくてもよい。
  3. bashで記述する場合は、先頭に#! /bin/bashを挿入する。
  4. カレントディレクトリは/var/www/cgi-binになる。
  5. apacheプロセスはこのディレクトリに書込み権がないので、ファイルの新規作成はできない。

~user01/public_htmlのcgiディレクトリにCGIを作成する

  1. 次のうちのどちらかの作業を行う。
    a. スーパーユーザーで/usr/sbinディレクトリのsuexecファイルの名前をsuexec.offに変更後、apacheを再起動。
    b. cgiディレクトリのパーミッションを755に変更(オーナー以外の書込み権を削除)。
  2. cgiディレクトリに次の内容で.htaccessを作成
     Options +ExecCGI
注意点は以下の通り
  1. 拡張子は.cgiとする必要がある。
  2. カレントディレクトリは~user01/public_html/cgiになる。
  3. CGIプログラムの実行ユーザーは次の様にになる。
    上記 a.の作業を行った場合はapache、行わなかった場合はuser01