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

最終更新日: 2017.11.25

■概要

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


■Webサーバー設定

【CentOS7の場合】
[root@centos ~]# vi /etc/httpd/conf.d/userdir.conf ← userdir設定ファイル編集
<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 ← #を追加(コメントアウト)

    #
    # 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 ← 行頭の#を削除(コメント解除)
    AliasMatch ^/centos(.*) /home/centos/public_html/$1
 ← centosユーザーのみhttp://centossrv.jp/centos/のように~(チルダ)なしでアクセスできるようにする
    AliasMatch ^/userdir/([^/]+)/(.*) /home/$1/public_html/$2
 ← 全てのユーザーでhttp://centossrv.jp/userdir/ユーザー名/でアクセスできるようにする
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride All ← .htaccessの許可
    Options IncludesNoExec ExecCGI FollowSymLinks ← CGI,SSI(Exec命令以外)の許可
    Require method GET POST OPTIONS
</Directory>

【CentOS6の場合】
[root@centos ~]# vi /etc/httpd/conf/httpd.conf ← httpd設定ファイル編集
<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 ^/centos(.*) /home/centos/public_html/$1
 ← centosユーザーのみhttp://centossrv.jp/centos/のように~(チルダ)なしでアクセスできるようにする
    AliasMatch ^/userdir/([^/]+)/(.*) /home/$1/public_html/$2
 ← 全てのユーザーでhttp://centossrv.jp/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>
※上記設定の場合、centosユーザーのみ、http://centossrv.jp/~centos/、http://centossrv.jp/centos/、http://centossrv.jp/userdir/centos/でアクセスできるようになる
その他のユーザーは、http://centossrv.jp/~ユーザー名/、http://centossrv.jp/userdir/ユーザー名/でのみアクセスできる

■Webサーバー設定反映

[root@centos ~]# systemctl reload httpd ← httpd設定反映※CentOS7の場合
[root@centos ~]# /etc/rc.d/init.d/httpd reload ← httpd設定反映※CentOS6の場合

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

(1)ユーザーディレクトリ(~/public_htmlディレクトリ)作成
既存ユーザーの場合、スクリプトで一括してユーザーディレクトリを作成する
[root@centos ~]# 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@centos ~]# sh userdirmake ← ユーザーディレクトリ一括作成スクリプト実行
user1
・
・
・
usern

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

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

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

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

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

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

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

(3)Webユーザー追加(SSHによるリモート接続もできるようにする場合)
※例としてユーザー名をcentosとする
[root@centos ~]# useradd centos ← 一般ユーザー追加

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

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

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

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

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

(1)Webページ表示確認
[root@centos ~]# vi index.html ← テストページ作成
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">※システムの文字コードがUTF-8の場合
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">※システムの文字コードがEUCの場合
<title>テスト</title>
<body>
テスト
</body>
</html>

[root@centos ~]# mv index.html /home/centos/public_html/ ← テストページをユーザーディレクトリへ移動
http://サーバー名/~centos/にアクセスしてテストページが表示されればOK

(2)CGI確認
CGIで簡単なテストページを表示してみる。
[root@centos ~]# vi test.cgi ← テスト用CGI作成
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n";※システムの文字コードがUTF-8の場合
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=euc-jp\">\n";※システムの文字コードがEUCの場合
print "<title>テスト</title>\n";
print "</head>\n";
print "<body>\n";
print "CGIテスト\n";
print "</body>\n";
print "</html>\n";

[root@centos ~]# chown centos. test.cgi ← テスト用CGI所有者変更

[root@centos ~]# chmod 755 test.cgi ← テスト用CGIパーミッション変更

[root@centos ~]# mv test.cgi /home/centos/public_html/ ← テスト用CGIをユーザーディレクトリへ移動
http://サーバー名/~centos/test.cgiにアクセスしてCGIテストページが表示されればOK

(3)SSI確認
SSIで現在日時を表示してみる。
[root@centos ~]# vi test.shtml ← SSIテスト用ページ作成
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">※システムの文字コードがUTF-8の場合
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">※システムの文字コードがEUCの場合
<title>テスト</title>
<body>
SSIテスト
<!--#config timefmt="%Y/%m/%d %H:%M:%S" -->
<!--#echo var="DATE_LOCAL" -->
</body>
</html>

[root@centos ~]# mv test.shtml /home/centos/public_html/ ← SSIテスト用ページをユーザーディレクトリへ移動
http://サーバー名/~centos/test.shtmlにアクセスして現在日時を表示するSSIテストページが表示されればOK

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

[root@centos ~]# mv .htaccess /home/centos/public_html/ ← .htaccessをユーザーディレクトリへ移動

[root@centos ~]# vi index.shtml ← .htaccessテスト用ページ作成
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">※システムの文字コードがUTF-8の場合
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">※システムの文字コードがEUCの場合
<title>テスト</title>
<body>
<p>.htaccessによるWebサーバー設定(例としてDirectoryIndex)の変更テスト</p>
このページのファイル名は<!--#echo var="DOCUMENT_NAME" -->
</body>
</html>

[root@centos ~]# mv index.shtml /home/centos/public_html/ ← .htaccessテスト用ページをユーザーディレクトリへ移動
http://サーバー名/~centos/にアクセスしてindex.shtmlが表示されればOK

(5)PHP確認
PHPで簡単なテストページを表示してみる。
[root@centos ~]# vi test.php ← PHPテスト用ページ作成
<?php
  phpinfo();
?>

[root@centos ~]# mv test.php /home/centos/public_html/ ← PHPテスト用ページをユーザーディレクトリへ移動
http://サーバー名/~centos/test.phpにアクセスしてphpinfoページが表示されればOK

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

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


■関連コンテンツ




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

Copyright© 2005-2017 fallenangels, All rights reserved.
ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします