/var/www/
我在将我的符号链接到我的主文件夹内的新目录时遇到了一些问题Webroot
。我认为这些是由于我对 Linux 权限缺乏了解造成的。
据我所知,符号链接应该采用您想要链接的目录和您想要链接到的目录的形式,因此就我而言,我运行了:
sudo ln -s ~/Webroot/* /var/www/
这有点作用,如果我运行,ls
我/var/www/
就可以看到目录中的所有文件Webroot
。
每当我尝试运行Webroot
文件夹中的文件时,都会出现 403 权限错误,这是因为我的 Webroot 目录中的文件是由我创建的,而 apache 实例作为 www-data 运行吗?
如果是这样,这是否意味着我需要更改我创建的每个文件的权限才能运行它?
我之前曾运行过本地 apache 实例,将默认 vhost 的目录根指向该Webroot
文件夹,在此实例中,我不需要更改任何权限。如能得到任何帮助,我将不胜感激。
答案1
这不是一个好的做法,我同意 Weboide 的观点。但有一个简单的方法可以实现这个目标。
1).启用Apacheuserdir
模块。
sudo a2enmod userdir
这将使Apacheuserdir
模块. 此模块允许使用http://example.com/~user/句法。
现在您可以将网站内容放入~/Webroot/
您的主目录中。
注意:默认文件夹是~/public_html
2). 对 进行必要的修改 /etc/apache2/mods-enabled/userdir.conf
。
3). 重启apache
sudo /etc/init.d/apache2 restart
现在,您可以通过浏览器访问 http://ip-address/~username 来访问该网站。您还可以为该网站设置虚拟主机。
如果你想运行 php 文件,你需要再执行一步
编辑/etc/apache2/mods-enabled/php5.conf
并注释掉以下几行:
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
php_admin_value engine Off
</Directory>
</IfModule>
</IfModule>
然后重新启动apache。
就这样。您已经完成了。
参考:https://wiki.ubuntu.com/UserDirectoryPHP
希望这能有所帮助。如果您遇到任何困难,请随时在此处发布。
答案2
这不是一个可以实现你想要的目标的好做法。
如果你使用 PHP,你可能需要看看执行,苏php或者php-fpm和快进快退。
您对这个问题的看法是正确的,这是一个权限问题,因为您的Webroot
文件归与 不同的用户所有www-data
。
这是一个解决您的问题的一个不错的解决方案。请注意,您可能需要使用 sudo 或以 root 身份登录。确保您完全理解将要执行的所有命令!
将您的文件夹、子文件夹和文件更改Webroot
为将组所有权设置为www-data
并设置适当的权限:
# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x
编辑:请注意,如果您使用常规用户帐户添加文件/文件夹,则肯定需要再次运行这些命令。
答案3
我在 Debian Lenny 上做了几乎相同的事情,但我改成了非 hax 模式,并且正确配置了 apache。但是使用符号链接:
$ ll /home
drwxr-xr-x 8 root root 4,0K nov 14 14.59 .
drwxrwxrwx 7 root root 4,0K nov 14 21.24 www -> /var/www
我认为你应该检查一下~和〜/ Webroot, 我认为你的目录(~) 是读保护的,我的意思是,你必须运行这个:
$ ls -la /home
要设置正确的权限,请使用:
# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot
我认为这应该有帮助,但请给我更多信息。我建议您从目录中取出 Webroot,例如/家 像我这样的,因为这可能是安全问题。
“#“ 方法root 权限例如写须藤在命令之前;“$”表示单用户权限
答案4
我曾遇到过这个问题。但我不喜欢将我的主目录组更改为 www-data。这个问题可以通过修改虚拟主机的配置文件轻松解决。只需配置 Directory 标记以包含这些
<Directory "your directory here">
Order allow,deny
Allow from all
Require all granted
</Directory>
我猜这Require all granted
是一个新功能;其默认值为denied
。
请参阅此页面以供参考:http://httpd.apache.org/docs/current/mod/core.html#directory