The VHOST configuration:
<virtualhost *:80=""> ServerAdmin webmaster@dev.somesite.com DocumentRoot "/var/local/somesite/public" ServerName dev.somesite.com ErrorLog logs/somesite.com-error_log CustomLog logs/somesite.com-access_log common <directory local="" public="" somesite="" var=""> Options FollowSymLinks Allow from all AllowOverride all </directory> </virtualhost>
The Dreaded Error Page:
Forbidden You don't have permission to access / on this server. Apache/2.2.3 (CentOS) Server at dev.somesite.com Port 80The first thing that came to me was that I might have created the folder with user ownership and privileges that the Apache user/group (apache/apache). It wasn't the case. Changing the ownership to apache/apache and even giving it a blanket access level 777 didn't fix it. Checking the error log the actual error was,
Permission denied: /var/local/somesite/public/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable
Consulting Google University, all that I got from a few scraps was that,
* Due to a permission and ownership problem (Nah, I already tried that.)
* Due to front page server extension (Why the hell would I need it?)
* Due to the "AllowOverride" Apache directive being on (50% true, but with the case that I have it will just transform the error to "Permission denied: access to / denied"
On to the real issue. I wasn't aware that SELinux was enabled. Turning on SELinux implements mandatory access control outside that of the default Linux kernel access control list that you manage using create user (setuid / useradd) and create group (setguid / groupadd). Using the latter as a method to change privileges and permission would be meaningless since it's when SELinux is enabled, it automatically creates file labels specific to type or role (e.g process), in my case a web server or an Apache httpd process. The apache process had no rights to the folder /var/local. Therefore it is not really an issue, but a violation to the default security settings of your system. More info on SELinux here - http://en.wikipedia.org/wiki/Security-Enhanced_Linux.
Then how do we solve the issue when you have SELinux on? Easy,
1) Use the permitted directory for web servers which is /var/www/html for RHEL/CentOS
2) Turn off SELinux (this is easy but be warned, turning SELinux back on again will require some work).
No comments:
Post a Comment