ユーザーディレクトリ作成(/~ユーザー名/)

最終更新日: 2014.02.19

<<トップページ <<新着情報 <<サイト内検索 <<CentOSで自宅サーバー構築 <<Scientific Linuxで自宅サーバー構築

■概要

一般ユーザーにホームページスペースを提供できるようにする。
ここでは、ホームページスペース提供サービスを行っている一般的なWebサーバーと同様な、http://fedorasrv.com/~ユーザー名/というURLの他に、http://fedorasrv.com/ユーザー名/及び、http://fedorasrv.com/userdir/ユーザー名/でも、一般ユーザーが作成したホームページへアクセスできるようにする。
なお、ここでは一般ユーザー名をfedoraとして説明する。


■Apache設定

[root@fedora ~]# vi /etc/httpd/conf/httpd.conf ← Apache設定ファイル編集
<IfModule mod_userdir.c>
    #
    # UserDir is disabled by default since it can confirm the presence
    # of a username on the system (depending on home directory
    # permissions).
    #
    UserDir disable
    ↓
    #UserDir disable ← #を追加(コメントアウト)

    #
    # To enable requests to /~user/ to serve the user's public_html
    # directory, remove the "UserDir disable" line above, and uncomment
    # the following line instead:
    #
    #UserDir public_html
    ↓
    UserDir public_html ← 行頭の#を削除(コメント解除)
    AliasMatch ^/fedora(.*) /home/fedora/public_html/$1
 ← fedoraユーザーのみhttp://fedorasrv.com/fedora/のように~(チルダ)なしでアクセスできるようにする
    AliasMatch ^/userdir/([^/]+)/(.*) /home/$1/public_html/$2
 ← 全てのユーザーでhttp://fedorasrv.com/userdir/ユーザー名/でアクセスできるようにする
</IfModule>

#<Directory /home/*/public_html>
#    AllowOverride FileInfo AuthConfig Limit
#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#    <Limit GET POST OPTIONS>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <LimitExcept GET POST OPTIONS>
#        Order deny,allow
#        Deny from all
#    </LimitExcept>
#</Directory>
以下の全行追加
<Directory /home/*/public_html>
    AllowOverride All ← .htaccessの許可
    Options IncludesNoExec ExecCGI FollowSymLinks ← CGI,SSI(Exec命令以外)の許可
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

[root@fedora ~]# /etc/rc.d/init.d/httpd reload ← Apache設定反映
httpd を再読み込み中:                                      [  OK  ]
※上記設定の場合、fedoraユーザーのみ、http://fedorasrv.com/~fedora/、http://fedorasrv.com/fedora/、http://fedorasrv.com/userdir/fedora/でアクセスできるようになる
その他のユーザーは、http://fedorasrv.com/~ユーザー名/、http://fedorasrv.com/userdir/ユーザー名/でのみアクセスできる

■ユーザーディレクトリ追加

(1)ユーザーディレクトリ(~/public_htmlディレクトリ)作成
既存ユーザーの場合、スクリプトで一括してユーザーディレクトリを作成する
[root@fedora ~]# vi userdirmake ← ユーザーディレクトリ一括作成スクリプト作成
#!/bin/bash

for user in `ls /home`
do
    id $user > /dev/null 2>&1
    if [ $? -eq 0 ] && [ ! -d /home/$user/public_html ]; then
        mkdir -p /home/$user/public_html
        chown $user. /home/$user/public_html
        chmod 711 /home/$user
        echo $user
    fi
done

[root@fedora ~]# sh userdirmake ← ユーザーディレクトリ一括作成スクリプト実行
user1
・
・
・
usern

[root@fedora ~]# rm -f userdirmake ← ユーザーディレクトリ一括作成スクリプト削除

新規ユーザー追加時にユーザーディレクトリ(~/public_htmlディレクトリ)が自動で作成されるようにする 
[root@fedora ~]# mkdir /etc/skel/public_html ← ユーザー追加時に~/public_htmlディレクトリが自動で作成されるようにする

(2)Webユーザー追加(SSHによるリモート接続はできないようにする場合)
[root@fedora ~]# useradd -s /sbin/nologin fedora ← 一般ユーザー追加

[root@fedora ~]# passwd fedora ← 一般ユーザーパスワード設定
Changing password for user fedora.
New password: ← 一般ユーザーパスワード応答
Retype new password: ← 一般ユーザーパスワード応答(確認)
passwd: all authentication tokens updated successfully.

[root@fedora ~]# chmod 711 /home/fedora/ ← 一般ユーザーのホームディレクトリのパーミッション変更

chrootユーザーの場合
[root@fedora ~]# chroot-useradd fedora /sbin/nologin ← 一般ユーザー追加
Changing password for user fedora.
New UNIX password: ← 一般ユーザーパスワード応答
Retype new UNIX password: ← 一般ユーザーパスワード応答(確認)
passwd: all authentication tokens updated successfully.

[root@fedora ~]# chmod 711 /home/fedora/ ← 一般ユーザーのホームディレクトリのパーミッション変更
※以降、SSHによるリモート接続はできないWebユーザーを追加する場合はこの手順で行う

(3)Webユーザー追加(SSHによるリモート接続もできるようにする場合)
[root@fedora ~]# useradd fedora ← 一般ユーザー追加

[root@fedora ~]# passwd fedora ← 一般ユーザーパスワード設定
Changing password for user fedora.
New password: ← 一般ユーザーパスワード応答
Retype new password: ← 一般ユーザーパスワード応答(確認)
passwd: all authentication tokens updated successfully.

[root@fedora ~]# chmod 711 /home/fedora/ ← 一般ユーザーのホームディレクトリのパーミッション変更

chrootユーザーの場合
[root@fedora ~]# chroot-useradd fedora ← 一般ユーザー追加
Changing password for user fedora.
New UNIX password: ← 一般ユーザーパスワード応答
Retype new UNIX password: ← 一般ユーザーパスワード応答(確認)
passwd: all authentication tokens updated successfully.

[root@fedora ~]# chmod 711 /home/fedora/ ← 一般ユーザーのホームディレクトリのパーミッション変更
※以降、SSHによるリモート接続もできるWebユーザーを追加する場合はこの手順で行う

■ユーザーディレクトリ確認

(1)Webページ表示確認
[root@fedora ~]# echo test > ~/public_html/index.html ← テストページ作成
http://サーバー名/~fedora/にアクセスしてテストページが表示されればOK

(2)CGI確認
CGIで簡単なテストページを表示してみる。
[root@fedora ~]# vi ~/public_html/test.cgi ← テスト用CGI作成
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>CGI test</title>\n";
print "</head>\n";
print "<body>\n";
print "CGI test\n";
print "</body>\n";
print "</html>\n";

[root@fedora ~]# chmod 755 ~/public_html/test.cgi ← テスト用CGIパーミッション変更
http://サーバー名/~fedora/test.cgiにアクセスしてCGIテストページが表示されればOK

(3)SSI確認
SSIで現在日時を表示してみる。
[root@fedora ~]# vi ~/public_html/test.shtml ← SSIテスト用ページ作成
<html>
<head>
<title>SSI test</title>
<body>
SSI test
<!--#config timefmt="%Y/%m/%d %H:%M:%S" -->
<!--#echo var="DATE_LOCAL" -->
</body>
</html>
http://サーバー名/~fedora/test.shtmlにアクセスして現在日時を表示するSSIテストページが表示されればOK

(4).htaccess確認
.htaccessでDirectoryIndex(ファイル名を省略した場合に表示されるページ)をindex.htmlからindex.shtmlに変更してみる。
[root@fedora ~]# vi ~/public_html/.htaccess ← .htaccessファイル作成
DirectoryIndex index.shtml

[root@fedora ~]# vi ~/public_html/index.shtml ← .htaccessテスト用ページ作成
<html>
<head>
<title>htaccess test</title>
<body>
<p>htaccess test</p>
this page's name is <!--#echo var="DOCUMENT_NAME" -->
</body>
</html>
http://サーバー名/~fedora/にアクセスしてindex.shtmlが表示されればOK

(5)PHP確認
PHPで簡単なテストページを表示してみる。
[root@fedora ~]# vi ~/public_html/test.php ← PHPテスト用ページ作成
<?php
  phpinfo();
?>
http://サーバー名/~fedora/test.phpにアクセスしてphpinfoページが表示されればOK

(6)Webサーバー確認後始末
上記の確認で作成したテスト用ページ等を全て削除する。
[root@fedora ~]# rm -f ~/public_html/* ← 作成したテスト用ページを全て削除

[root@fedora ~]# rm -f ~/public_html/.htaccess ← 作成した.htaccessを削除


■関連コンテンツ




▲このページのトップへ戻る

プライバシーポリシー