Htaccessによるアクセス制御

提供:kuhalaboWiki
(版間での差分)
移動: 案内, 検索
(ページの作成:「アカウントとパスワードによって、特定のユーザだけにアクセスを許可する仕組み。ディレクトリごとにアカウントを設定す...」)

2013年4月15日 (月) 22:34時点における版

アカウントとパスワードによって、特定のユーザだけにアクセスを許可する仕組み。ディレクトリごとにアカウントを設定することができる。(Apacheのみ)

目次

資料

配布資料

ホームディレクトリ構造

/home/i**24000/ |--public_html/ |  (ホームページ用のディレクトリ)
                |               |--index.html (自分のトップページのHTML)
                |               |--staffonly/ |(パスワード保護しているディレクトリ)
                |               |             |--.htaccess(アクセス制御のファイル)
                |               |--xxxx/ (その他のページのディレクトリ)
                |
                |--conf/ |  (htaccessのアカウント管理用ディレクトリ)
                         |--.htpasswd (htaccessアカウント管理ファイル)

(注1)/(スラッシュ)で終わっているのはディレクトリを指す。
(注2)「**24000」は,自分の学籍番号に置き換える.
  • 自分のローカルHDDに,i**24000という名前のフォルダを作成して,上記と同じ構造にしておく。
  • ローカル側でファイルを作成・編集してから,サーバ側にWinSCPでアップロードする。
  • サーバ側で作成したフォルダやファイルをWinSCPでダウンロードして,常にサーバ側の情報をローカル側に持っておく。
  • 外からhttpでアクセスするのは、public_html以下のディレクトリ。

.htaccessファイルの作成

  • アクセス制御したいディレクトリに.htaccessという名前のファイルを置く。
    1. ローカルPC上のテキストエディタで以下の通り.htaccessファイルを作成する。
    2. WinSCPなどでサーバ上のアクセス制御したいディレクトリ(例えば,/home/i0X24***/public_html/staffonly/)にアップロードする。

.htaccessの中身の例

AuthType Basic
AuthGroupFile /dev/null
AuthUserFile /home/i0X24***/conf/.htpasswd
AuthName "ようこそ!太郎のページへ !"
<Limit GET POST>
  Order deny,allow
  Deny from all
  Require user Media
  Satisfy any
</limit>

意味は以下の通り

AuthUserFile /home/i0X24***/conf/.htpasswd
パスワードファイル(.htpasswd)をサーバ上に設置する場所をフルパスで指定
i0X24***はサーバにログインするときの自分のアカウント名
AuthName "ようこそ!太郎の課題のページへ"
ダブルクォーテオション(")で囲った文字列がログイン画面に表示されるメッセージ
Require user Media
指定したユーザ名(この場合はMedia)でアクセス許可
ログインのユーザ名とパスワードを管理する.htpasswdファイルはAuthUserFileで指定
複数のユーザ名を指定するときは半角スペースで区切る。
  • たとえばユーザ名tomoを追加するには Require user Media tomo

.htpasswdファイルの作成

ユーザ名とパスワードを管理する.htpasswdファイルを作成し、public_htmlの外に置く。

  • teratermやPuTTYなどでサーバにログインする。
  • .htaccessで指定したディレクトリ(/home/i0X24***/conf/)を作成する。
[i**4000@sandbox ~]$ pwd  (現在位置の確認)
/home/i**4000
[i**4000@sandbox ~]$ mkdir conf  (confディレクトリの作成)
[i**4000@sandbox ~]$ cd conf  (confディレクトリへ移動)
[i**4000@sandbox conf]$ pwd  (現在位置の確認)
/home/i**4000/conf
  • htpasswdコマンドを入力する。
[i**4000@sandbox ~]$ htpasswd -c パスワードファイル ユーザ名

パスワードファイルが .htpasswd で,ユーザ名Mediaの場合は,

[i**4000@sandbox ~]$ htpasswd -c .htpasswd Media
New password:
Re-type new password:
Adding password for user Media
[i**4000@sandbox ~]$ 
  • 以下のように新しく設定するパスワードを2回聞いてくるので,パスワードを入力する。
  • このとき,カーソルは動かないが,文字は入力されているので,気にせずパスワードを入力し、Enterキーを押す。
  • lsコマンドでパスワードファイル.htpasswdの存在を確認し、catコマンドで,パスワードファイル.htpasswdの中身を確認できる。
[i**4000@sandbox ~]$ ls -al
total 40
drwxr-xr-x   2 kuha kuha 4096 Apr 25 08:01 ./
drwxr-x--x  23 kuha kuha 4096 Apr 20 17:10 ../
-rw-r--r--   1 kuha kuha  140 Oct 22  2003 .htpasswd
[i**4000@sandbox ~]$ cat .htpasswd
Media:wtnrc7euKVd9U

ユーザを追加する場合は、htpasswdコマンドを-cオプションをはずして使用する。 例えばユーザ名tomoを追加するには以下のとおり。

[i**4000@sandbox ~]$ htpasswd .htpasswd tomo

関連授業

システムデザイン

個人用ツール
名前空間

変種
操作
案内
ツールボックス