如何授予 Apache 对 MAC OSx 上文件夹的访问权限


How do I give Apache Access to folders on MAC OSx?

我是Mac和Apache的新手。我的开发机器我的网站无法访问网络根目录/图像或/css文件夹下的任何文件。

apache 日志给出以下错误:

(13)权限被拒绝:文件权限拒绝服务器访问:

该网站托管在"网站"文件夹下。我在此文件夹上签入了"获取信息",似乎"每个人"都有读取访问权限。什么给?

谢谢!

问题是 Apache 运行的用户与文件所有者不同,并且 Apache 的用户没有读/写/执行权限。在我的情况下,用户是_www并且是_www组的成员。

我解决了将文件组更改为_www的问题:

  1. 查找 apache 的用户和组。我使用了这个 php 脚本:

    <?php
    echo exec('whoami') . '<br>';
    echo exec('groups') . '<br>';
    ?>
    
  2. 使用文件的用户所有者登录。

  3. 将文件的用户所有者添加到_www组。

    $ sudo dseditgroup -o edit -a userOwnerOfFiles -t user _www
    
  4. 更改需要_www的文件组

    $ chgrp -R _www path/containing/files
    
  5. 更改组的文件权限

    $ chmod -R g+rwx path/containing/files
    

解决此问题的另一种方法是在MacOSX中使用扩展属性

chmod +a "_www允许列表,读取,搜索,读取,读取安全,file_inherit,directory_inherit"/path/to/document_root

今天对我来说

是一个艰难的问题。事实证明,我需要向 Web 服务器授予对整个目录树一直到文档根的权限。

它今天出现在我身上,因为我正在使用虚拟主机并将文件存储在我的用户目录中的树上。

我不想递归更改文档目录中的所有数千个文件,所以我只是对路径中的每个文件夹进行了 chmod。在我的主目录中:

$ chmod 755 Documents
$ chmod 755 Documents/projects
$ chmod 755 Documents/projects/dev
$ chmod 755 Documents/projects/dev/someglamorousclientname/
$ chmod 755 Documents/projects/dev/someglamorousclientname/docroot

我发现有两件事对我有用(我专门试图让 apache 访问下载文件夹):

  1. 在"系统偏好设置"-">安全和隐私"->"隐私"中,滚动到左侧的"完全磁盘访问",确保在底部解锁,然后单击 + 以添加应用。 导航到/usr/sbin 并找到可执行httpd并添加它,确保它启用了完全磁盘访问权限。重新锁定首选项

  2. 右键单击 Finder 中的特定文件夹并选择"获取信息",然后在"共享和权限"下,允许"每个人"用户访问(或者,如果您想提高安全意识,也许只允许"_www"用户 - 但我没有测试这个)。

这为我解决了

这种方法测试安全快捷,如果不起作用,很容易切换回来(它不会把事情搞砸得更乱,这在解决这类问题时经常是一个问题:

  1. 找到httpd.conf(您可以使用终端中的httpd -V进行操作)
  2. 在括号或任何文本编辑器中打开此文件
  3. 在此文件中,找到:

    User _www Group _www
  4. 将其
    更改为
    User {your username} Group staff

也许您将不得不在User中添加其他内容并Group

  1. 在此httpd.conf文件中,您还可以找到指向Web服务器的路径,只需搜索DocumentRoot即可。复制此路径,并使用以下命令在终端中导航到它cd例如:
    cd /Library/WebServer/Documents
  2. 当你在的时候,做一个ls -l。这将为您提供有关网络根文件夹所有权的信息。调整您的User,并在httpd.confGroup与此有关
  3. 您还可以输入webroot文件夹并使用ls -l检查站点所有权,并更新有关此httpd.conf

如果这不起作用,请不要忘记切换回:

User _www Group _www