リブラリウスと日々の記録(はてな版)

研究とかイベント運営とかの記録を淡々と。

【設定系ノウハウ】newusersで一括ユーザー作成したら,Apache2のUserdirでコケた話。

ども。イマイです。

大学の授業でWebページを作ってもらう課題をやっていたりします。

60名くらいのユーザーを一括作成して,ホームディレクトリを作って,その中にpublic_htmlフォルダを置いておいて,サンプルのindex.htmlとstyle.cssを置くという作業をやっていたのですが,どうにも上手くいかなかったので,色々試行錯誤していました。

結果,非常につまらないミスをしていたことが発覚したのでメモとして投稿します。

【結論】

  • Apache2のUserdirモジュールはユーザーのホームディレクトリに作成されたpublic_htmlを参照する。
  • よって,ホームディレクトリを設定していないユーザーは,/home以下にユーザー名と同じディレクトリを作って,そこにpublic_htmlフォルダをコピーしてパーミッションを揃えても,403エラーを出しますよ。
  • newusersでUserdirを将来的に使うようなユーザーを作る時は,ホームディレクトリを予め設定しておきましょう。

【環境】

  • Serversman@DTIのEntryプラン。Ubuntu14.04 LTS(64bit)のシンプルセット
  • Apache 2.4.7

【経緯】

  • 大学の授業で,受講生に対してWebページを作る課題をやらせたい。
  • 学内にサーバー設置NGなので,VPSを使ってそちらで作業させる。
  • 以前は60名のユーザーをちまちま1名ずつ作って設定していたが,いい加減面倒くさいし,時間もかかりすぎなので,一括設定したい。

【やったこと】

  1. 下記のURLを参考にnewusersの使い方を学んだ。

    Linux - newusersコマンドを使ってお手軽に大量のアカウントを作成する方法 - Qiita

  2. とりあえず,テストでユーザー名とパスワードだけ設定したCSVを作って一括作成してみる(←これが間違いのきっかけ)
  3. ホームディレクトリとか/etc/skelの設定を一括で設定するために下記のURLを参考に,スクリプトを書く。

    一括ユーザ作成コマンド、newusers - satakesatakeの日記 - nextstageoneグループ

  4. スクリプトを動作させたら,homeディレクトリもskel以下のファイルも全て反映された*1
  5. さて,Apache2でUserdirを有効にして,動作確認するか。最初に手動で作ったユーザーはpublic_html以下のファイルが表示された!よかった。
  6. あれ,一括作成した方が403エラーになるよ。
  7. Apacheのエラーログを見てみよう。下記のエラーが出てくるな。

    AH01630: client denied by server configuration: /p
    ublic_html

  8.  ググってみると,Apache2.2系の設定をApache2.4系に持っていくと出てくるらしい。これが初めての設定なのだから,関係ない…。
  9. 3時間ぐらい,OSを入れ直したり,Userdirのconfをいじったりしていたが,症状に違いは無し。
  10. ポイントは手動で作ったユーザーと一括処理したユーザーで見え方が違うこと。
  11. エラーログとかをたどって眺めていたら,実は違っていたのですが,何かホームディレクトリの処理のところで何かが起こっているのではないかと気づく。
  12. newusersは最初のスクリプトで,ホームディレクトリを設定できることを確認。
  13. もしかしたらと思って,予めnewusersに投入するファイルでユーザーのホームディレクトリを設定してみる。
  14. 4.の操作をやり直し。
  15. アクセスしてみると,見えた!

【教訓】

  • OSのせいにしたりしない。
  • エラーログはしっかり眺めましょう。
  • 前提条件で誰も間違えない系のミスは,下手にググりすぎるとドツボ。

ということで,何やっているの系のイージーミスでした。ちゃんと見るところは見ましょう。

ちなみにServersman@DTIは下記の制限があるので,こちらは要注意。でも,安く提供してくれているので,分かっていればそんなに問題ではなかったです(100名以下,かつグループ名を同じGIDにすれば今回はクリアできるので)。

Trip to the World: DTI の ServersMan@VPS には変な制限がある

*1:ここで見た目,homeディレクトリがユーザーごとに出来上がるので,ホームディレクトリを設定したつもりになってしまいました。