Я просто не могу этого понять. Я запускаю apache2 на сервере Ubuntu 10.04 i386. Каждый раз, когда я посещаю свой сервер (имеет IP-адрес и подключен к Интернету со статическим IP-адресом xxx.xxx.xxx.xxx), так что проблема не в этом) в браузере, mysub.domain.edu (здесь переименован), я получаю следующее:
Forbidden
You don't have permission to access /index.html on this server
Журнал ошибок apache2 подтверждает это:
[Mon Apr 18 02:38:20 2011] [error] [client zzz.zzz.zzz.zzz] (13)Permission denied: access to / denied
Я постараюсь предоставить всю необходимую информацию ниже:
1) Содержимое /etc/apache2/httpd.conf
DirectoryIndex index.html index.php
2) Содержимое / etc / apache2 / sites-available / default
<VirtualHost *:80>
ServerAdmin email@domain.com
DocumentRoot /home/myusername/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/home/myusername/htdocs/">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
order allow,deny
allow from all
DirectoryIndex index.html index.php
Satisfy any
</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 /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/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>
ServerName mysub.domain.edu
</VirtualHost>
3) Содержимое / etc / apache2 / sites-enabled / 000-default
<VirtualHost *:80>
ServerAdmin email@domain.com
DocumentRoot /home/myusername/htdocs
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/home/myusername/htdocs/">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
order allow,deny
allow from all
DirectoryIndex index.html index.php
Satisfy any
</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 /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/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>
ServerName mysub.domain.edu
</VirtualHost>
4) Результат ls -l (когда я использую sudo -i как root):
root@myserver:/home/myusername# ls -l
total 4
drwxr-xr-x 2 www-data root 4096 2011-04-18 03:04 htdocs
5) ps auxwww | grep -i apache
root@myserver:/home# ps auxwww | grep -i apache
root 15121 0.0 0.4 5408 2544 ? Ss 16:55 0:00 /usr/sbin/apache2 -k start
www-data 15122 0.0 0.3 5180 1760 ? S 16:55 0:00 /usr/sbin/apache2 -k start
www-data 15123 0.0 0.5 227020 2788 ? Sl 16:55 0:00 /usr/sbin/apache2 -k start
www-data 15124 0.0 0.5 227020 2864 ? Sl 16:55 0:00 /usr/sbin/apache2 -k start
root 29133 0.0 0.1 3320 680 pts/0 R+ 16:58 0:00 grep --color=auto -i apache
6) ls -al / home / myusername / htdocs /
root@myserver:/# ls -al /home/myusername/htdocs/
total 20
drwxr-xr-x 2 www-data root 4096 2011-04-18 03:04 .
drw-r--r-- 4 myusername myusername 4096 2011-04-18 02:13 ..
-rw-r--r-- 1 root root 69 2011-04-18 02:14 index.html
В настоящее время я не использую файлы .htaccess в моей корневой папке (htdocs) в папке пользователя.
Я не знаю, что не так, я пытался исправить его более 12 часов и ничего не добился. Если у вас есть предложения, я весь уши ...
(это скорее предложение отладки, поскольку я думаю, что Pratik ответил на вопрос с помощью + x)
Ошибка, о которой вы упоминаете, является ошибкой разрешения файловой системы, поэтому, если ваш файл конфигурации apache не перенаправляет / назначает псевдоним в какое-то ограниченное место в файловой системе, ваша проблема связана с разрешениями в каталоге / home / myusername / htdocs или индексе .html файл.
Чтобы узнать, где отказано вашему пользователю apache, выполните следующую команду:
su -s /bin/bash apache
а затем попытайтесь
cd /home/myusername/htdocs
ОСТОРОЖНО плохих советов по поводу разрешений. Как правило, вы НЕ должны помещать 755 в каталог / home / username.
Правильные разрешения задокументированы в файле httpd.conf, и я вставлю сюда соответствующие разделы:
# This usually means that ~userid (/home/username for the lay person)
# must have permissions of 711
ПРИМЕЧАНИЕ 711 для ~ идентификатора пользователя рекомендуется, ИЗБЕГАЙТЕ 755 для / home / username (~ идентификатор пользователя) !!!!!!!! ,
#~userid/public_html must have permissions"
# of 755"
~ userid / public_html может дать 755, но если вы дадите 755 своей папке ~ userid, КАЖДЫЙ в вашей системе сможет получить доступ к вашей домашней папке, читать ваши файлы и выполнять файлы дома, как правило, действительно ПЛОХО на многопользовательской пользовательская система. 711 избегает предоставления доступа на чтение группе и другим
Сделайте ваше / home / имя пользователя и / home имеет разрешения 755
EDITL: я добавлю сюда, чтобы его было легче читать
Вы разместили это:
drwxr-xr-x 2 www-data root 4096 2011-04-18 03:04 .
drw-r--r-- 4 myusername myusername 4096 2011-04-18 02:13 ..
Как видите, в папке / home / myusername есть rw, r, r. Вам нужно указать "x" этой папке и папке / home
chmod o+x /home
chmod o+x /home/myusername
Я всегда начинал с копирования ваших конфигураций в ваш домашний каталог и выполнял команду apt-get purge apache2.
Затем переустановите его и выполните команду "diff -y oldfile newfile", чтобы увидеть изменения. Если, как ни странно, это не изменения конфигурации, то это разрешения в корневом веб-каталоге.
Это займет всего пару минут, если у вас нет большого количества хостов.