Назад | Перейти на главную страницу

Проблема с разрешением WebServer, Ubuntu и Lighttpd

Просто настройте lighttpd на Ubuntu 9.04, но боретесь с разрешениями. Веб-сайт загружается нормально, поскольку я использую Fast CGI, но мои медиа (Javascript, CSS, изображения) не загружаются.

Я включил опцию ведения журнала в файле конфигурации:

debug.log-request-processing = "включить"

В файле журнала я получаю следующее:

2009-08-16 02:42:27: (response.c.473) - обработка физического пути 2009-08-16 02:42:27: (response.c.474) Путь
: /var/www/sites/mysite.com/http/media/css/style.css 16.08.2009, 02:42:27: (response.c.520) - доступ запрещен

Затем я пошел и проверил разрешения для всех этих каталогов, изменил их, чтобы у группы www-data было разрешение, но я все еще получаю 403 запрещенных ошибки и ошибки в файле журнала.

я побежал:

chgrp -R идентификатор: www-data css / chmod -R g + rx css /

и ls -l

> id@mysite.com:/var/www/sites/mysite.com/http/media$
> ls -l total 12 drwxr----- 2 id
> www-data 4096 Aug 16 01:59 css
> drwxr----- 2 id www-data 4096 Aug 16
> 02:00 images drwxr----- 3 id www-data
> 4096 Aug 16 02:00 js

Пытался предоставить пользователю www-data права доступа rwx, но по-прежнему получаю запрещенные ошибки.

Как я могу это исправить? Возможно, сервер не использует пользователя www-data, как я могу проверить, что он работает под этим пользователем?

Если вы используете пакет Ubuntu и ничего не меняли слишком сильно, имя запущенного процесса должно быть lighttpd, а имена пользователей и групп по умолчанию - www-data. Чтобы быть уверенным, проверьте записи server.username и server.groupname в вашем файле конфигурации (/etc/lighttpd/lighttpd.conf).

Бег ps -fC lighttpd должен сообщить вам, работает ли он, и идентификатор пользователя, который работает как. В моей системе результат выглядит как

  • rik@mary:/home/rik$ ps -fC lighttpd
  • UID PID PPID C STIME TTY TIME CMD
  • www-data 667 1 0 03:50 ? 00:00:00 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf

Все, что вы хотите отображать в корневом каталоге документа, должно быть доступно для чтения пользователем www-data, а каталоги также должны исполняться с помощью www-data. Чтобы проверить это, вы можете попробовать использовать find в качестве пользовательских www-данных. В этом может помочь команда sudo. sudo -u www-data find /var/www/sites/mysite.com/http/media/css/ должно получиться. Если нет, попробуйте еще раз на один шаг вперед с sudo -u www-data find /var/www/sites/mysite.com/http/media/ и так далее, пока find не вернет имена файлов и каталогов. После этого запускается Chown и chmod команды для этого каталога без флага -R (рекурсивный). Затем проверьте еще раз.

Если вас устраивают все файлы и каталоги в /var/www/sites/mysite.com/http/media будучи читаемым кем угодно, вы можете захотеть изменить chmod для всех файлов как 644, а для dirs как 755. Если у вас есть файлы, для которых требуется установить бит выполнения, это может быть немного большей проблемой, если все они не имеют отличительных расширений. Это делается с помощью флагов -type, -exec и -name, например:

  1. chown -R id:www-data /var/www/sites/mysite.com/http/media

  2. find /var/www/sites/mysite.com/http/media -type d -exec chmod 755 {} \;

  3. find /var/www/sites/mysite.com/http/media -type f -exec chmod 644 {} \;

  4. find /var/www/sites/mysite.com/http/media -type f -name '*.php' -exec chmod 755 {} \;

    Если вы не хотите, чтобы lighty имел доступ к другим файлам и / или каталогам в дереве, вам нужно будет поступить иначе. Всегда проще, если вы храните файлы, которые хотите читать, в другом каталоге, чем те, которые вы хотите сохранить вне поля зрения общественности.

Вам необходимо добавить также права на чтение и выполнение для группы (в настоящее время они, похоже, отсутствуют):

chmod g+rx css media

ps должен быть в состоянии сказать вам эффективного пользователя и группу, используемых процессом lighttpd:

ps -ax -o user,group,pid,comm | grep httpd

Вы также можете проверить в файле lighttpd.conf, какие значения "server.username" и "server.groupname" установлены.

Процессу необходим доступ на выполнение к каталогу, чтобы спуститься в него. Убедитесь, что для всех родительских каталогов, не принадлежащих пользователю или группе lighttpd, установлены глобальные разрешения на выполнение.

Вы уверены, что разрешения правильные? "drwxr -----" кажется неправильным. Вам, вероятно, понадобится 0755 (rwxr-xr-w) для каталогов и 0644 (rw-r - r--) для файлов.

Кроме того, www-data выглядит как владелец, а не группа.