カレントディレクトリにBasic認証をかけるシェルスクリプト

Linux
スポンサーリンク

やりたいこと

カレントディレクトリにBasic認証をかけるBashスクリプトを作成したい。

具体的な要件は以下。

  • .htaccessと.htpasswdは、カレントディレクトリに設置。
  • カレントディレクトリのフルパスを取得して.htpasswdのPathを記述する。
  • chmod コマンドにて.htaccessと.htpasswdを、適切なパーミッションにする。
  • .htpasswdのIDおよびパスワードは、Bashスクリプトを実行したユーザーにインタラクティブに入力させる仕組み。
  • Basic認証の対象ディレクトリはカレントディレクトリ以下すべて

カレントディレクトリにBasic認証をかけるシェルスクリプト

空のシェルスクリプトを作成する。

vim create_basic-auth.sh

以下の内容をコピペしてシェルスクリプトを作成する。

#!/bin/bash

# カレントディレクトリのフルパスを取得
DIR=$(pwd)

# .htaccess ファイルを作成
echo "AuthType Basic" > .htaccess
echo "AuthName \"Restricted Content\"" >> .htaccess
echo "AuthUserFile $DIR/.htpasswd" >> .htaccess
echo "Require valid-user" >> .htaccess

# パーミッションを設定
chmod 644 .htaccess

# .htpasswd ファイルを作成
echo -n "Enter the username: "
read USERNAME
htpasswd -c .htpasswd $USERNAME

# パーミッションを設定
chmod 644 .htpasswd

シェルスクリプトに実行権限を付与する。

chmod +x create_basic-auth.sh

(ご自身の環境に合わせて自己責任で実施ください)

シェルスクリプトを実行する。

./create_basic-auth.sh

以下の順番でプロンプトに対して返答する

  1. Basic認証に設定したいユーザー名を入力する
  2. Basic認証に設定したいパスワードを入力する
  3. Basic認証に設定したいパスワードを入力する(確認)

注意点

  • 当然ながら、Apacheがインストールされ、mod_auth_basicとmod_authn_fileが有効になっていること
  • Apacheの設定で.htaccessファイルが有効になっていること
  • 既存のファイルを上書きしないように注意
    • 既存の.htpasswdファイルにユーザーを追加する場合は、htpasswd -cの-cオプションを削除してファイル名を指定する

コメント