我知道文件权限之前已经在这里介绍过,但是我很难理解我的场景的概念。
- 我在旧的 ubuntu 安装上创建了这些文件。
- 我已经将文件复制到我的新 ubuntu 安装中,并将它们放在我的 webroot 中。
- 当我尝试运行文件(它们是 PHP 文件)时,出现与权限相关的错误
为了解决这个问题,我假设它们必须仍然由以前的所有者拥有,所以我chown -R
在目录上运行,使用我的用户名作为参数,以便获得目录中所有文件的所有权。应该注意的是,新旧 ubuntu 安装之间的用户名是相同的。
当我尝试再次运行文件时,同样的问题:由于权限问题导致 500 错误。谁能告诉我我应该采取哪些其他步骤?
我的 apache 安装的 webroot 位于我的主文件夹中。如果我在我的 webroot 中创建新文件,它们也会按预期工作,它只是导致问题的旧文件。
如果您的服务器文档在
/home/$USER/public_html
您需要运行的目录中将 DocumentRoot 文件夹的所有权授予用户
www-data
和组www-data
。然后您可以将自己添加到组中
www-data
最后,您需要使 DocumentRoot 文件夹可由所有者(www-data 用户)和您自己(作为
www-data
组的一部分)写入:为方便起见,您可以
public_html_fix.sh
使用内容命名脚本:将其保存在内部
/home/$USER/bin
并使用以下命令使其可执行:然后,您可以在需要时调用它,从文件系统上的任何地方,您碰巧发现自己是这样的:
您的 webroot 上方的目录应该设置执行位以允许 Apache 进入目录。
如果您的 webroot 位于
/home/user/htdocs
、/
、和 ,/home
则应该设置执行位。/home/user
/home/user/htdocs
上述解决方案“有效”,但并不理想。如果您创建了一个文件夹,Apache 将无法写入该文件夹。反过来也会发生。
这可以通过设置 umask 0007 并将自己添加到 Apache 组(如果我没记错的话,请访问 www-data)来“修复”,以便该组可以写入新创建的文件和文件夹。
或者,您可以安装替代的 Apache MPM:Apache2 MPM ITK(配置信息)并调整配置,以便 Apache 在您的用户下运行。
除了 chmoding 文件和编辑 apache .conf 文件之外,我想说没有什么对我有用,因为我的文件位于我通过 nautilus 自动挂载的分区上。这仅限制您的用户的分区。
要检查您的文件是否对
www-root
运行 apache 的用户或任何用户可见(运行ps -aux | grep apache2
以检查),请运行以下命令:并尝试从您的文档根目录读取文件。
如果文件不可读,请检查:
1)您已设置所有其他文件权限
2)如果需要,您已
FollowSymlinks
在.conf
文件中使用3)你已经设置了 DocumentRoot
3)为所有用户安装您的分区。我必须
/etc/fstab
通过它的 UUID 编辑和指定我的分区:然后通过 nautilus 卸载分区并执行
sudo mount -a
. 如果一切顺利,您的文件现在位于/mnt
. 更新您的符号链接,一切顺利。我发现始终设置它的最佳方法是 VirtualMin 的方式。
创建用户和组“myhome”
使 apache 用户成为“myhome”组的成员。不像这里描述的一些解释那样相反
因此,除了 /home/myhome/www 之外,现在 apache 还具有对 /home/myhome 的读取和执行访问权限
“myhome”用户具有写入权限