読者です 読者をやめる 読者になる 読者になる

Carpe Diem

備忘録。https://github.com/jun06t

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

自宅サーバ
まずはユーザの追加から。 新規ユーザ作成時にそのユーザのホームディレクトリに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を直接編集する場合の注意(手動反映が必要です)