我已经为这个问题苦苦挣扎了好几天。我试图更改 LinuxMint16 下 Apache/2.4.6 (Ubuntu) Web 服务器的默认 www 目录,并使其指向我与另一个 Windows 安装共享的 NTFS 硬盘。此硬盘安装在 /media/crash/Yari 下,无论我怎么尝试,都不起作用。而如果我将默认 www 目录更改为安装 Linux 的同一硬盘上的其他目录,则一切都会按预期运行。
以下是我为了使事情正常运转而做出的所有改变:
我想要的新 www 文件夹是 /media/crash/Yari/www 因此我编辑了 /etc/apache2/apache2.conf 文件:
DocumentRoot /media/crash/Yari/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /media/crash/Yari/www>
#Options FollowSymLinks
Options Indexes FollowSymLinks Includes ExecCGI MultiViews
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
之后,正如我从这篇文章中看到的那样 https://askubuntu.com/questions/11840/how-to-chmod-on-an-ntfs-or-fat32-partition/91054#91054 我已经通过输入确定了我的硬盘 UUID
sudo blkid
并编辑文件 /etc/fstab 添加此行 UUID=#my-hd-uuid# /media/crash/Yari ntfs-3g auto,users,permissions 0 0
为了确保 apache 用户(在我的情况下为 www-data)有权访问新的 www 目录中的文件,我已使用以下命令更改了硬盘内所有文件的组和所有者
sudo chgrp -R www-data /media/crash/Yari
sudo chown -R www-data /media/crash/Yari
sudo chmod -R 775 /media/crash/Yari
我已经通过以下方式检查了新 www 目录及其所包含文件的权限
sudo ls -l /media/crash/Yari
并且所有文件和目录都显示为 drwxrwxr-x 1 www-data www-data,因此之前的权限修改正确完成。
不幸的是,我肯定遗漏了一些东西,因为以上所有方法都没用!希望有人能帮忙,非常感谢你的帮助。
答案1
为了让 apache 访问某个目录,它必须不仅拥有该目录的访问权限,还必须拥有该目录上层所有目录的访问权限。因此,您需要允许 www-data 对/media
和/media/crash
以及具有读取访问权限/media/crash/Yari
。
一般情况下,我建议 apache 用户不要拥有对网页所在目录的写入权限。允许写入用于日志、运行/pid 文件和任何缓存文件的目录就足够了。当然,如果您有一个写入磁盘的 cgi 应用程序,您必须允许它这样做,但将任何此类文件保存在单独的目录中会更安全。
无论如何,要解决眼前的问题,要么将/media
和的组所有权更改/media/crash
为 www-data,要么将其权限更改为 755。
答案2
我有点害怕更改权限,/media
因为该目录下还有另外 2 个硬盘,我必须在 Windows 下使用,而最后的权限更改/media/crash/Yari
使得该硬盘在 Windows 下不可写入。
/etc/fstab
所以我所做的就是通过更改行来编辑文件
UUID=#my-hd-uuid# /media/crash/Yari ntfs-3g auto,users,permissions 0 0
进入
UUID=#my-hd-uuid# /sharedhd ntfs-3g auto,users,permissions 0 0
新的默认 www 就会存在/sharedhd/www
,而我不需要更改/media
和的权限/media/crash
。
最后我想指出的是,使用
sudo chgrp -R www-data /media/crash/Yari
sudo chown -R www-data /media/crash/Yari
对我来说,这是一个错误,因为它破坏了 Windows 中的所有权,导致所有文件和文件夹无法访问。我唯一要做的就是更改文件/etc/fstab
并更改权限
sudo chmod -R 777 /sharedhd
不幸的是,通过授予 775 权限,我无法在 Windows 下编辑相同的文件和目录,所以我被迫使用 777...如果这种方法有一些我应该知道的缺点,或者如果有更好的方法可以在不授予所有文件的 root 访问权限的情况下做到这一点,请告诉我!