Warning:DocumentRoot 错误解决办法

安装时考虑到安全,准备将DocumentRoot单独放置在一个分区里,所以在逻辑分区专门为它建了一个目录为:/Dmnr
  为了挂载该分区设/etc/fstab为:
  代码:…
  LABEL=/Dmnr /Dmnr ext3 defaults 1 2
  目录建好后将网站内容拷入该目录下的www/html,并修改/etc/httpd/conf/httpd.conf如下:
  [php]
  …
  DocumentRoot “/Dmnr/www/html”
  …
  …
  [/php]
  重起Apache出现如下错误提示:
  代码:#service httpd restart
  Starting httpd: Warning: DocumentRoot [/Dmnr/www/html] does not exist
  [ OK ]
  当然服务器不会正常工作,Apache认为这个不是目录!但是将DocumentRoot “”对准其它目录则没有问题,服务器可以正常工作。
  解决:
  一. SELinux 的配置( 略… ),可以参考:
  http://www.chinalinuxpub.com/read.php?wid=1010
  http://blog.josesun.org/archives/2004_08/2
  二. 修改 html 目录权限:
  1. 检查网站内容目录
  [php]
  #ls -Z /Dmnr/www/html
  [/php]
  状态为:
  [php]
  -rwxr-xr-x someuser somegroup index.php
  …
  [/php]
  2. 显然没有 SELinux 权限,所以做如下修改:
  [php]
  chcon -R -t httpd_user_content_t /Dmnr/www/html
  [/php]
  再看就是这样:
  [php]
  -rwxr-xr-x someuser somegroup user_u:object_r:httpd_sys_content_t index.php
  …
  [/php]
  重启 httpd 一般的 php 就可以工作了。
  三. 数据库
  1. Mysql
  但是当读写数据库时还会被 SELinux 拒绝,到 /var/lib/mysql 或 /var/lib/pgsql 下看没有问题,权限是这样的:
  [php]
  -rw-rw—- mysql mysql root:object_r:mysqld_db_t ibdata1
  -rw-rw—- mysql mysql root:object_r:mysqld_db_t ib_logfile0
  -rw-rw—- mysql mysql root:object_r:mysqld_db_t ib_logfile1
  drwx—— mysql mysql root:object_r:mysqld_db_t mysql
  srwxrwxrwx mysql mysql root:object_r:mysqld_var_run_t mysql.sock
  drwx—— mysql mysql root:object_r:mysqld_db_t test
  [/php]
  但是到放了数据的 test 库底下看就知道自建的表还是没有 SELinux 权限,没关系,修改就是了:
  [php]
  chcon -R -t mysqld_db_t /var/lib/mysql
  [/php]
  注意!此处的 SELinux 属性是 mysqld_db_t
  2. pgsql
  我还开了 PostgreSQL 的库,用此方法修改属性没有成功,报错:
  [php]
  chcon: can’t apply partial context to unlabeled file pgsql/data/base/23456
  chcon: can’t apply partial context to unlabeled file pgsql/data/base/12345
  [/php]
  到 /var/lib/pgsql/data/base 下看,原来是自建库 12345 和 23456 不能应用属性。找资料找的乱七八糟,半天也没有头绪,算了!
  [php]
  #su - postgres
   cd/var/lib/pgsql/data/base mv 12345 12345_b
  $cp -r 12345_b 12345
  [/php]
  再看:
  [php]
  drwx—— postgres postgres user_u:object_r:postgresql_db_t 12345
  …
  [/php]
  说明已经加上属性了,再刷新一下读数据库的网页,OK !
  最后还要说几句,修改 SELinux 属性挺烦的,但是对安全有好处,所以值得下一点工夫。

你可能感兴趣的:(Http,Linux,apache,安全)