開発途中のサイトで検索エンジンに補足されたり、一般のお客様に知らずにユーザー登録されたりしないよう、BASIC認証をかけることがそこそこあるんですが、毎回やり方を調べるのが面倒なのでシェルプログラムにしました。
そんなにシェルプログラムに慣れてるわけではないなか、すんごく簡単に作ったので変なところがあるかもしれませんが、今度BASIC認証かける時にも使えるよう、備忘録代わりに書いておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/sh CURRENT_DIR=`pwd` echo "authorized file name ?(Enter/file name)"; read AUTHORIZE_FILE echo "authorized user name ?" read USER_NAME OUTPUT="AuthUserFile ${CURRENT_DIR}/.htpasswd\nAuthName \"Please enter username and password\"\nAuthType Basic\n<Limit GET HEAD POST>\nrequire user ${USER_NAME}\n</Limit>" if [ -n "$AUTHORIZE_FILE" ]; then OUTPUT="<Files ${AUTHORIZE_FILE}>\n${OUTPUT}\n</Files>" fi if [ ! -f "$CURRENT_DIR/.htpasswd" ]; then touch $CURRENT_DIR/.htaccess echo "touch .htpasswd" fi echo -e $OUTPUT echo -e $OUTPUT >> $CURRENT_DIR/.htaccess htpasswd -c .htpasswd $USER_NAME |
認証をかけたいファイル名(index.htmlとかautorize_*とか)とユーザー名を入力して、パスワードを入力するとカレントディレクトリの.htaccessに設定を追加して.htpasswdファイルを作成します。
ファイル名を省略すると、カレントディレクトリ以下が対象になります。
既にhtpasswdがある場合は上書きになるので注意。.htaccessには追記です。重複登録は考慮していないので内容をみて分からない人は普通に登録したほうが無難。
.htaccessの隠蔽とかやろうと思ったけど試したサーバーでは既にみれなくなっていたのでやっていません。