Ubuntu/Apache2/ Forbidden/Permission error

2020-04-11 11:36发布

问题:

I have Ubuntu 11.10 with Lamp installed

There is some files that i can't access to from my web directory "/var/www"

http://localhost/banner/banner.html I am getting an error :

Forbidden You don't have permission to access /banner/banner.html on this server. Apache/2.2.20 (Ubuntu) Server at localhost Port 80

I can access /var/www/index.php normally as i can browse /var/www/banner normally too from my browser

This is a small peace of :

    a1a4a@A1A4a:~$ ls -l /var/www
    total 7088
    -rwxrwxrwx  1 root root     916 2011-11-25 20:49 access-controlled.php
    -rw-r--r--  1 root root   22163 2011-12-16 22:28 account_info.php
    -rw-r--r--  1 root root   22126 2011-12-16 22:27 account_info.php~
    -rw-r--r--  1 root root   16585 2011-12-16 21:32 acount_info.php
    -rw-r--r--  1 root root       0 2011-12-16 21:28 acount_info.php~
    drwxrwxrwx  5 root root    4096 2011-12-09 23:03 banner
    drwxrwxrwx  2 root root    4096 2011-12-09 23:03 css

And

    a1a4a@A1A4a:~$ ls -l /var/www/banner
    total 20
    -rw--w---- 1 root root 2564 2011-11-25 20:51 banner.html
    drwx-w---- 4 root root 4096 2011-12-09 23:03 examples
    drwx-w---- 2 root root 4096 2011-12-09 23:03 lib
    drwx-w---- 4 root root 4096 2011-12-09 23:03 skins
    -rw--w---- 1 root root 1431 2011-11-25 20:51 style.css

This is my config :

    <VirtualHost *:80>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

 </VirtualHost>

My "nano /etc/apache2/apache2.conf" is set as default ...

How can i make all my /var/www files (folders and sub-folders and files ) accessible from my browser as if i was on a windows machine using Wamp ...

P.S: I will host the website on a Windows machine i am using ubuntu just for coding.

回答1:

the user running the apache deamon, on ubuntu thats www-data (like in most debian based systems), needs at least read permissions for the files. But as you posted only owner root and group root has read rights.

Actually owner root has rw group root has r.

So the user actually running the webserver (www-data) falls to the others permissions, which have none.

Either do a chmod -R o+r /var/www/banner/* or a chown -R www-data /var/www/banner to fix that.



回答2:

I always forget that while the sub-directories and files need the read permission, the sub-directories also need execute permission.

chmod a+x banner

This tends to come up when I've saved a web page in the 'Webpage, Complete' format with Chrome or Firefox and am then trying to serve it under localhost, which I often do when building mockups for clients.



回答3:

May be it is an issue with your banner.html permissions - apache`s user has no permissions even to read it.