Carpe Diem

  Top > スポンサー広告> 自宅サーバ > ユーザーの追加&ApacheでUserdirを使用  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ユーザーの追加&ApacheでUserdirを使用

2011 - 10/25 [Tue] - 02:50

まずはユーザの追加から。
新規ユーザ作成時にそのユーザのホームディレクトリにpublic_htmlを作成されると便利なので以下のコマンドを。

$ sudo mkdir /etc/skel/public_html

なお、新規ユーザ作成時に作成したいファイルやディレクトリがある場合は、上記のような要領で、/etc/skel 以下に作成してやればいいです。

では試しにtestという名前のユーザを作成してみます。
$ sudo su
# adduser test

useradd ではなく adduser を使ってください。そうすればホームディレクトリやグループも自動で作ってくれます。

無事にユーザを作れたら、今度はApacheの設定
http://ドメイン/~ユーザ名/ みたいな、「~ユーザ名」を使用できるようにする設定です。
一般ユーザーは/var/www/を利用できないので、ユーザーフォルダ内のpublic_htmlを使用するのが普通です。

まずはモジュールの有効化

$ sudo a2enmod userdir

次に/etc/apache2/mods-enabled/userdir.conf の Directoryタブの中を変更します。これは今までやったディレクティブ設定と同じ。強いて違うところはモジュールの読み込みと、Directoryの指定にワイルドカードがあるところ。以下はほぼデフォルトの例ですが、中身は好きに変えてもらえればいいです。

<IfModule mod_userdir.c>
        UserDir public_html
        UserDir disabled root

        <Directory /home/*/public_html>
                AllowOverride None
                Options MultiViews IncludesNoExec +ExecCGI FollowSymLinks
                <Limit GET POST OPTIONS>
                        Order allow,deny
                        Allow from all
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Order deny,allow
                        Deny from all
                </LimitExcept>
        </Directory>
</IfModule>


編集したらApacheを再起動。

$ sudo service apache2 restart

最後にパーミッション設定。
ユーザーフォルダは当然ながら見られたくない。けどパーミッション700だとapacheでは読み込めない
そこで711にすればOK。これならフォルダ内は見られないけど使えます。具体的には
test 711
test/public_html 755


つまり711にすることで、そのフォルダの中身は読み込めないけど、フォルダとしての機能はしてくれるから、さらに深い階層で+rが入っていれば、その深い階層部分は外からも見れる。+wならもちろん書き込みもできる。具体的に

cd /home/test/ はOK。けどtest/でのlsはダメ
ls /home/test/もダメ。read系は使えません。


cd /home/test/public_html/はOK。public_html内ならlsもOK。public_htmlは755ですから。

ユーザーフォルダ自体の中身は見えないし、Tab補完も効かないので、フォルダ名さえわかりにくくすれば基本アクセスされません。


最後にユーザの確認が完了し不要になった場合。-rをつけるとフォルダごと消してくれます。

# userdel -r test

ちなみにユーザ情報に関するファイルは以下の3つ

/etc/passwd ユーザ情報
/etc/shadow パスワード情報
/etc/group グループ情報


パスワード情報のパーミッションは600でいいですが、他は644で。じゃないと「ユーザー名orグループ名が見つかりません」というエラーが表示されます。


ユーザーIDやグループ名等をあらかじめ決めたい場合はリンク先を参照してください。


public_html 配下の php が動かない場合
その場合/etc/apache2/mods-enabled/php5.conf にて<IfModule mod_userdir.c>の中のphp_admin_value engine をコメントアウトすれば良い。けどこれセキュリティ的に問題なのか?よく分かってないです。


◆ユーザの権限付加。グループへの追加

グループへの追加
$ sudo gpasswd -a user1 group1

グループからの削除
$ sudo gpasswd -d user1 group1

変更を反映させるために一度ログアウトしてください。

◆sudoerになる

adminグループに追加するか、もしくはsudoerファイルを編集します。編集する場合、root権限で
# visudo
# User privilege specification
root    ALL=(ALL:ALL) ALL
newuser ALL=(ALL:ALL) ALL

初期ユーザと全く同じ権限のユーザにしたい場合は
$ sudo emacs -nw /etc/group

adm:x:4:user1,user2


で初期ユーザが所属するグループに新しいユーザも追加してください。

Ubuntuの場合は追加後反映が必要です。CentOSでは必要なかったのですが。
$ sudo grpconv

これで反映されます。

ソース:
ApacheでUserdirを使用できるようにする
[Ubuntu] ユーザの追加・修正・削除をコマンドで実行
Ubuntu でユーザを追加する
Ubuntu Lucid 10.04 で/home/*/public_html 配下の php が動かない
/etc/groupを直接編集する場合の注意(手動反映が必要です)

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。