在Linux中访问NTFS链接文件夹的Apache权限

13

在Debian jessie中使用Apache2/PHP时,如果我想在Apache的文档文件夹(/var/www)中创建一个新的子目录,我只需创建一个指向存储php文件的外部文件夹的链接,然后按照以下方式更改文件夹的所有者和权限即可使其正常工作。

ln -s /home/myname/mynewcode /var/www/test1
chown -R www-data:www-data /home/myname/mynewcode
chmod -R 755 /home/myname/mynewcode

那么我就可以访问http://localhost/test1

但是当我想要链接的实际文件夹在NTFS分区上时,由于chown和chmod不起作用,我需要修改/etc/fstab文件并添加以下代码,以便我的NTFS分区将挂载所需的权限和所有者。

UUID=XXDDXDDXDDDXDDDD /media/myname/lable ntfs user,exec,uid=www-data,gid=www-data 0 2

ln -s /media/myname/lable/mynewcode2 /var/www/test2

但我仍然从Apache2中得到了权限错误,而我不知道该怎么办!

禁止访问
您无权访问此服务器上的/test2目录。
Apache/2.4.10 (Debian) 服务器位于 localhost 端口 80


1
你能提供更多关于你正在尝试处理的NTFS驱动器的信息吗?这是一个物理连接到服务器的NTFS驱动器吗?是USB还是内部驱动器?作为网络共享?如果是网络共享,是否有域控制器?如果在域上,使用Active Directory权限来共享吗? - Chris Baker
1
NTFS驱动器是内部磁盘之一,没有域控制器,但有时Windows IIS会使用它,我无法通过Windows共享它。 - AMCoded
1
这里涉及到一个虚拟机? - Chris Baker
1
不,该服务器是多重启动的。 - AMCoded
2个回答

3

我不能提供100%可行的解决方案,但是我有两点建议您可以检查。

首先,尝试在 fstab 行中添加 umask 。我认为这会导致权限错误。 umask 在挂载时将正确的权限添加到所有文件(644)和目录(755)。您必须重新挂载NTFS文件夹!

UUID=XXDDXDDXDDDXDDDD /media/myname/lable ntfs user,exec,uid=www-data,gid=www-data,umask=022 0 2

你需要确保www-data用户能够进入目标文件夹:

sudo su www-data -s bash && cd /media/myname/lable

第二步,确保特定文件夹允许“FollowSymlinks”操作,我想你已经完成了这一步,但还是要尝试一下:

<Directory "/media/myname/lable/">
    Options FollowSymLinks +Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
<Directory "/var/www">
    Options FollowSymLinks +Indexes
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

谢谢您的回复。但是这个解决方案对我没有用,我仍然收到了“Forbidden”错误。我添加了umask并重新启动了操作系统,我还双重检查了/etc/apache2/apache2.conf中的FollowSymlinks,一切似乎都没问题。但权限错误仍然存在。 - AMCoded
登录到您的服务器,输入 sudo su www-data -c bash,然后尝试 cd /var/www/your_symlinked_directorycat some_file.html。这样,您就可以看到是否存在某个权限错误。 - Daniel W.
sudo su www-data -c bash => 当前帐户不可用。 - AMCoded
你应该能够使用 sudo su www-data -s /bin/bash - skroczek
1
谢谢skroczek,你的指导让我找到了错误。www-data@AM-Notebook:~$ cd test=> bash: cd: test: Permission denied 我无法进入test文件夹,它是一个安全链接,目录的权限为drwxr-xr-x 1 www-data www-data 4096 Jun 5 00:31 test。是否有其他步骤可以解决这个错误?顺便说一下,对于回答晚了,我并不总是能够访问系统。 - AMCoded
显示剩余3条评论

2
我假设NTFS分区属于Windows机器?您可以在Windows中共享它,并使用以下命令在Debian中挂载:

mount -t cifs //windows_host/share /var/www/test2 uid=xxx,gid=xxx,rw,sec=ntlmv 0 0

这样,您就不需要直接处理NTFS了。


1
谢谢回复。是的,NTFS分区属于Windows机器,但该机器并不总是可用,因此我无法使用共享功能。 - AMCoded
2
没关系。这可能是一个愚蠢的问题:你说你不能使用共享,但当它不可用时,你如何以另一种方式挂载它? - raynix
我有一个多启动服务器,有时系统会启动Windows并使用该硬盘上的IIS,而大多数情况下Debian会使用Apache。 - AMCoded
我没有NTFS进行测试,但我猜想你可以使用rsync在Debian启动时将所有内容同步到本地Linux分区?虽然不完美,但至少你不会被NTFS权限错误所阻塞。 - raynix
明智的想法,但如果我在Debian中进行更改并希望在Windows中同步分区怎么办?我认为只有将ext3分区挂载为只读分区的工具可用于Windows。 - AMCoded
在Debian关闭之前,或许可以将其同步回NTFS? - raynix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接