Я установил lighttpd на Debian Jessie для обслуживания статических файлов, у меня есть USB-накопитель, смонтированный в /media/storage, с /media/storage/www в качестве корневого каталога документов, а мой lighttpd.conf выглядит следующим образом:
server.modules = (
"mod_access",
"mod_alias",
"mod_compress",
"mod_redirect",
# "mod_rewrite",
)
server.document-root = "/media/storage/www/"
server.upload-dirs = ( "/var/cache/lighttpd/uploads" )
server.errorlog = "/var/log/lighttpd/error.log"
server.pid-file = "/var/run/lighttpd.pid"
server.username = "www-data"
server.groupname = "www-data"
server.port = 80
index-file.names = ( "index.php", "index.html", "index.lighttpd.html" )
url.access-deny = ( "~", ".inc" )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
compress.cache-dir = "/var/cache/lighttpd/compress/"
compress.filetype = ( "application/javascript", "text/css", "text/html", "text/plain" )
# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.assign.pl"
include_shell "/usr/share/lighttpd/include-conf-enabled.pl"
Я хочу иметь возможность редактировать веб-сайт под своим обычным пользователем "jurre". Поэтому я сделал "sudo chown jurre:www-data /media/storage/www" и "sudo chmod 740 /media/storage/www" (чтобы я мог читать, писать и выполнять файлы, но веб-сервер может только читать). Конечно, я вышел из системы и снова вошел в нее, а затем перезапустил lighttpd после этого. Я добавил простой index.html с "Hello World!", чтобы проверить настройку, но я продолжаю получать ошибку 403 denied при переходе на
ls -l в /media/storage/www :
total 8
-rw-r--r-- 1 jurre www-data 58 May 16 16:43 index.html
Я также проверил журнал ошибок lighttpd, но он показывает только то, что веб-сервер был выключен и запущен снова, никаких ошибок в журнале нет.
решение1
Вы не можете получить доступ к своей www
папке, так как www-data
у пользователя есть только 4 права (пользователь:группа jurre:www-data
и права 740), что означает отсутствие права на выполнение для www
папки, только право на чтение (чтение имени папки и атрибутов).
Вам нужно выполнение справа от папки, потому что выполнение папки означает ее открытие (для просмотра списка файлов или входа в нее). Вы можете сделать это с вашим собственным пользователем jurre
(право 7), но www-data
не имеет установленного бита выполнения.
Измените права на эту папку на 750 и повторите попытку.
решение2
Еще одной частой проблемой является активный SELinux на машине.
Даже при наличии правильных прав доступа к дереву каталогов вы все равно получите ошибку 403, если каталог не зарегистрирован в SELinux.
chcon -R -h -t httpd_sys_content_t /absolute/path
исправлю это.
решение3
Суперпеликан,
В дополнение к комментарию выше. Может стоит попробовать "sudo chown -R www-data:www-data * " или"sudo chown -R www-data:www-data /media/storage/www/* " В этой папке или вложенных папках изнутри/медиа/хранение/www Таким образом, владельцем папок и файлов внутри него будет веб-сервер, а не вы как пользователь.
Что касается chmod.. Также попробуйте что-то вроде"sudo chmod -R 755 /media/storage/www/* " Худший случай "chmod -R 775"Существуют различные уровни безопасности файлов между веб-сервером и самой физической ОС. chown/chmod больше на уровне ОС. Также повлияет на получение файлов и веб-страниц на сервере.
Надеюсь, это немного поможет.. Ура..