centos系统在安装apache后,会创建apache用户和apache用户组,通过apache用户运行httpd服务。网站要正常运行,必须要确保满足以下条件:
1.apache用户对所有的php脚本拥有read权限,不能拥有write权限
2. 如果网站需要有上传功能,对drupal的public文件系统(在admin/config/media/file-system),要求apache用户对该目录有read,write和execute权限
对于这些权限是否满足条件,建议使用 security review 模块进行定期检测。该模块未必能提供完全准确的信息,如果发现修改后的一些问题,依然提示错误,可以尝试先 skip, 然后再开启检测的形式。
drwxrwx--- 7 apache www 4096 2008-01-18 11:02 files/
drwxr-x--- 32 www apache 4096 2008-01-18 11:48 modules/
-rw-r----- 1 www apache 873 2007-11-13 15:35 index.php
以上是一个配置实例,其中www用户属于www组,该用户是网站的owner,对所有的文件拥有read, write权限,apache用户组对所有文件拥有read权限,对文件夹有read,execute权限;对于files文件夹比较特殊,他的owner为apache用户,对该文件夹拥有read, write, execute权限,对该文件夹内的文件拥有read, write权限。
对于权限修改,可以参考以下命令:
[root@localhost]cd /path_to_drupal_installation
[root@localhost]chown -R www:apache .
[root@localhost]find . -type d -exec chmod u=rwx,g=rx,o= '{}' \;
[root@localhost]find . -type f -exec chmod u=rw,g=r,o= '{}' \;
对于files内的文件夹和文件权限的修改,参考以下命令:
[root@localhost]cd /path_to_drupal_installation/sites
[root@localhost]find . -type d -name files -exec chmod ug=rwx,o= '{}' \;
[root@localhost]for d in ./*/files
do
find $d -type d -exec chmod ug=rwx,o= '{}' \;
find $d -type f -exec chmod ug=rw,o= '{}' \;
done
以上内容参考了 Securing file permissions and ownership.