如何授予 apache 使用 NTFS 分区上的目录的权限?

Posted

技术标签:

【中文标题】如何授予 apache 使用 NTFS 分区上的目录的权限?【英文标题】:How do I give apache permission to use a directory on an NTFS partition? 【发布时间】:2013-01-29 16:07:02 【问题描述】:

我在具有 20GB 硬盘驱动器的旧机器上运行 Linux (Lubutu 12.10)。我有一个带有 NTFS 分区的 1 TB 外置硬盘。在该分区上,有一个 www 目录,其中包含我的 Web 内容。它在启动时自动挂载为 /media/t515/NTFS。

我想将 apache 文档目录从 /var/www 更改为 /media/t515/NTFS/www。

我需要将该分区保留为 NTFS 分区,因为我在运行 WAMP 的不同机器上使用相同的硬盘。

我将 /etc/apache2/sites-available 中的“默认”文件更改为新位置,然后重新启动服务器。当我尝试去本地主机时,我得到了错误:

403 禁止 您无权访问此服务器上的 /。

然后我将 fstab 中的自动挂载选项更改为包含选项“umask=0000”,然后更改为“umask=2200”,但均无济于事。我仍然收到相同的错误消息。

当我以任何用户身份登录时,我可以从其他应用程序毫无问题地访问 NTFS 分区。但是 Apache 似乎无法(或不愿意)访问该分区。

【问题讨论】:

实际上,我可以毫不费力地使用它。我不得不更改父文件夹的权限。虽然 /media/t515/NTFS 有完全权限,但 /media/t515 没有完全权限。我没有意识到 apache 需要访问路径中的所有目录才能工作,但我发现它隐藏在 apache 文档中。 如果您发现任何现有答案尚未涵盖的解决方案,请post your own answer。谢谢! 【参考方案1】:

上面的答案都没有解决问题,实际上问题与Apache本身有关,而不是文件系统或权限。

你唯一需要做的就是:

<Directory "/www/mywebdirectoryinapartitioneddisk">
    Require all granted
</Directory>

这将解决问题

这里是我博客中的帖子,详细解释了所有内容。它可以在 NTFS 上运行

http://www.tbogard.com/2014/09/12/making-apache-server-to-read-a-partitioned-disk-the-definitive-solution/

【讨论】:

【参考方案2】:

经过多次尝试,这对我来说是成功的没有别的,那就是:更改 Apache 的配置,使其不再使用 www-data(Apache 用户)而是我自己的用户。

做起来很简单。在我的 Apache 版本中,要更改的两行位于 /etc/apache2/envvars 文件中(它可以是另一个版本中的另一个文件):

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

我用我的用户名替换了www-data(这里是toto :)):

export APACHE_RUN_USER=toto
export APACHE_RUN_GROUP=toto

【讨论】:

伙计,你救了我。谢谢。【参考方案3】:

根据我的经验,我总是不得不重新安装具有 RW 权限的驱动器。发现这个:

sudo mount -t ntfs -o rw,auto,user,fmask=0022,dmask=0000 /dev/whatever /mnt/whatever

或:

对于 NTFS 分区,使用 fstab 中的权限选项。

首先卸载ntfs分区。

然后编辑/etc/fstab

图形gksu gedit /etc/fstab

命令行sudo -e /etc/fstab

用 blkid 识别你的分区 UUID

sudo blkid

并为 ntfs 分区添加或编辑一行

# change the "UUID" to your partition UUID
UUID=12102C02102CEB83 /media/windows ntfs-3g auto,users,permissions 0 0

创建一个挂载点(如果需要)

sudo mkdir /media/windows

现在挂载分区

挂载/media/windows

我给你的选项,auto,会自动挂载分区 当你启动并且用户允许用户挂载和卸载时。

然后您可以在 ntfs 分区上使用 chown 和 chmod。

两者都在这里找到:https://askubuntu.com/questions/11840/how-to-chmod-on-an-ntfs-or-fat32-partition

【讨论】:

方法#2正是我要找的【参考方案4】:

其实很简单:

1) 在 Windows 主机上创建一个本地用户

2) 向该用户授予适当的 NTFS 权限

3) 验证访问权限(仅限 Windows)

...那么...

4) 配置您在 Linux 上的 NTFS 挂载以使用相同 Windows 用户和组(Linux 用户/组在此无关紧要)

5) 配置 Apache 以使用该 Linux 组(Linux 用户/组在此处必不可少

【讨论】:

感谢您的回答。我不完全清楚如何做到这一点。我在 Windows 中创建了一个本地用户,并为该用户提供了完整的 NTFS 权限。如何编辑 fstab 以将该分区自动挂载为该 Windows 用户?在那之后我该如何配置apache?我必须创建一个与我创建的 Windows 用户同名的 Linux 用户吗?

以上是关于如何授予 apache 使用 NTFS 分区上的目录的权限?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅使用 linux 在 ntfs-3g 分区中取消设置文件的稀疏标志?

如何将NTFS格式的移动硬盘挂接到Mac OS上进行读写操作

在NTFS分区上加密的文件夹在重装后无法访问(无法去掉加密)

Centos如何访问本地硬盘的NTFS分区

在 Vista 中如何查看 NTFS 分区的分配单元大小?

在安装Windows与Linux双系统时需要如何进行分区?