#contents
 ----
 * 一般ユーザのウェブ表示 [#zcd47f9b]
 
 ** Apache の設定 [#oaa2c4b2]
 
  一般ユーザのウェブを公開するには Apache の設定ファイルである httpd.conf の調整、ディレクトリの作成が必要です。加えて SELinux を有効にしている場合、一般ユーザのウェブ表示を行うときには注意が必要です。
 
  httpd.conf の 340 行目前後を書き換えます。
 
  <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
  
  </IfModule>
 
  【 UserDir disable 】と初期状態では一般ユーザのウェブ表示が不許可です。&br;
  許可するためには disable の行をコメントし、【 UserDir pubic_html 】を有効にしなくてはいけません。ここは環境や好みに応じて UserDir www 等、適時変更下さい。
 
 変更後)
  <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
  
  </IfModule>
 
  また、この状態ではウェブの公開ができても CGI や SSI の許可がされません。.htaccess を扱うことができるように 360 行目前後を適時書き換えます。以下は設定例です。
 
  <Directory /home/*/public_html>
      AllowOverride All
      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>
 
  httpd.conf の編集が終わったら Apache の再起動を実行し、設定を反映させます。
 
  # /sbin/service httpd restart
  httpd を停止中:                                            [  OK  ]
  httpd を起動中:                                            [  OK  ]
 
 ** ディレクトリの確認 [#d2b07bcb]
 
  次にユーザディレクトリのパーミッションを確認します。&br;
  ユーザが追加された時点でのホームディレクトリのパーミッションは 755(rwxr-xr-x) です。このままではウェブの表示をさせることが出来ますが、もし違っている場合は変更が必要です。
  # chmod o+x /home/アカウント名
  こちらのコマンドを実行して、「その他」のユーザ権限に対して「実行(x)」を許可します。
 
  次に公開用ディレクトリを作成します。
  $ mkdir public_html
  $ echo test > public_html/test.html
 
  あとはブラウザから http://192.168.11.253/~アカウント名/test.html として表示できる事が確認できれば問題ありません。
 
 ** SELinux 導入時の注意点 [#ccc3aaf7]
 
  もし SELinux が有効になっている場合は【 Forbidden 】とエラーが出てしまいます。You don't have permission to access 対象ファイル、のエラーです。
 
  Apache のエラーログにも以下のような記録が残ります。
 
  [Sun Jun 19 21:05:42 2005] [error] [client 192.168.11.102] (13)Permission denied: access to /~akane/test.html denied
 
  原因は SELinux の【 タイプ遷移 】によるセキュリティーポリシーの制限を受けるからです。SELinux では新しくディレクトリを作成すると、その親ディレクトリのセキュリティコンテキストを継承します。
 
  $ ls -lZ
  こちらのコマンドを実行すると、ディレクトリ無いのセキュリティコンテキストが表示されます。以下は akane アカウントのホームディレクトリ「 /home/akane 」のリストです。
  こちらのコマンドを実行すると、ディレクトリ内のセキュリティコンテキストが表示されます。以下は akane アカウントのホームディレクトリ「 /home/akane 」のリストです。
 
  $ ls -alZ /home/akane/
  drwxr-xr-x  akane    users    root:object_r:user_home_dir_t    .
  drwxr-xr-x  root     root     system_u:object_r:home_root_t    ..
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .bash_logout
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .bash_profile
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .bashrc
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .canna
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .emacs
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .gtkrc
  drwxr-xr-x  akane    users    user_u:object_r:user_home_t      .kde
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .zshrc
  drwxr-xr-x  akane    users    user_u:object_r:user_home_t      public_html
 
  public_html には user_u:object_r:user_home_t というセキュリティコンテキストが割り当てられています。apache ではルール上、public_html を表示出来ません。
 
  # /sbin/ausearch -m AVC
  こちらのコマンドを実行して SELinux のログを見ると、実行できない旨のエラーが確認できます。
 
  time->Sun Jun 19 21:05:42 2005
  type=AVC msg=audit(1119182742.782:6278950): avc:  denied  { getattr } for 
   pid=6090 comm="httpd" name=public_html dev=dm-1 ino=5625101  
  scontext=root:system_r:httpd_t tcontext=user_u:object_r:user_home_t tclass=dir
  type=SYSCALL msg=audit(1119182742.782:6278950): arch=40000003 syscall=196
  success=no exit=-13 a0=95e58a0 a1=bfca1564 a2=32cff4 a3=bfca1564 items=1
  pid=6090 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48
  sgid=48 fsgid=48 comm="httpd" exe="/usr/sbin/httpd"
  type=AVC_PATH msg=audit(1119182742.782:6278950):  
  path="/home/akane/public_html"
  type=PATH msg=audit(1119182742.782:6278950): item=0 
  name="/home/akane/public_html" inode=5625101 dev=fd:01 mode=040755 ouid=501
   ogid=100 rdev=00:00
 
  Fedora Core 4 では予め /home/ユーザ名/public_html に対するセキュリティコンテキストが設定されています。/sbin/restorecon コマンドを用いて、public_html へ適切なラベルを割り当てなくてはいけません。
  今回の例では /home/akane/ 以下を適切にラベル割り当てをしたいので、
  $ /sbin/restorecon -R /home/akane 
  このようにコマンドを実行します。コマンド実行後、再度 ls に Z オプションをつけてセキュリティコンテキストを確認すると、次のようにセキュリティコンテキストの"タイプ"が先ほどの「user_home_t」から「httpd_user_content_t」に変更されている事が確認できます。
 
  # ls -alZ /home/akane/
  drwxr-xr-x  akane    users    root:object_r:user_home_dir_t    .
  drwxr-xr-x  root     root     system_u:object_r:home_root_t    ..
  -rw-------  akane    users    user_u:object_r:user_home_t      .bash_history
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .bash_logout
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .bash_profile
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .bashrc
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .canna
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .emacs
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .gtkrc
  drwxr-xr-x  akane    users    user_u:object_r:user_home_t      .kde
  -rw-r--r--  akane    users    user_u:object_r:user_home_t      .zshrc
  drwxr-xr-x  akane    users    user_u:object_r:httpd_user_content_t public_html
 
 ----
  少々面倒ですが、SELinux を有効にして一般ユーザのウェブ表示を行うときには注意が必要です。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS