WebServer权限问题,Ubuntu&Lighttpd

只需在Ubuntu 9.04上设置lighttpd,但是会遇到权限问题。 该网站加载罚款,因为我使用快速CGI,但我的媒体(JavaScript,CSS,图像)不会加载。

我在configuration文件中启用了日志选项:

debug.log-request-handling =“enable”

我在日志文件中得到以下内容:

2009-08-16 02:42:27:(response.c.473) – 处理物理path2009-08-16 02:42:27:(response.c.474)path
:/var/www/sites/mysite.com/http/media/css/style.css 2009-08-16 02:42:27:(response.c.520) – 访问被拒绝

然后我去检查所有这些目录的权限,改变他们,所以WWW数据组有权限,但我仍然得到403禁止错误和日志文件中的错误。

我跑了:

chgrp -R id:www-data css / chmod -R g + rx css /

和ls -l

> [email protected]:/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数据用户rwx权限,并仍然得到禁止的错误。

我怎样才能解决这个问题? 有可能服务器没有使用www-data用户,我怎么检查它是否在这个用户下运行?

如果您使用的是Ubuntu软件包,并且没有太多改变,正在运行的进程名称应该是lighttpd,默认的用户名和组名都是www-data。 检查你的configuration文件(/etc/lighttpd/lighttpd.conf)中的server.username和server.groupname条目是肯定的。

运行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来执行。 要testing这个你可能想尝试使用find作为用户www-data。 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/再试一步, sudo -u www-data find /var/www/sites/mysite.com/http/media/等等,直到find可以返回的文件和目录名。 一旦在那里运行chownchmod命令,而不用-R(recursion)标志。 然后再testing一次。

如果你对任何人都可以读取的/var/www/sites/mysite.com/http/media下的所有文件和目录感到满意,你可能需要将所有的文件改为644,将目录改为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 {} \;

    如果你不想轻松地访问树中的其他文件和/或目录,则需要以不同的方式处理。 如果你想把你想要的文件保存在一个不同于你不希望公开的目录中的目录,那么总是比较容易。

你确定权限是正确的吗? “drwxr —–”似乎不正确。 你可能需要的是目录上的0755(rwxr-xr-w)和文件上的0644(rw-r-r–)。

此外,万维网数据看起来是所有者,而不是组织。

ps应该能够告诉你lighttpd进程使用的有效用户和组:

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

您也可以在lighttpd.conf文件中检查“server.username”和“server.groupname”设置为什么。

进程需要对目录执行访问才能进入目录。 确保任何不属于lighttpd用户或组的拥有全局执行权限的父目录。

您还需要添加读取和执行组的权限(目前他们似乎缺less):

chmod g+rx css media