写权限 - localhost - Mac OSX

时间:2011-11-07 11:38:02

标签: php macos apache localhost privileges

我是mac世界的新手,刚刚设置了我的网络服务器。我使用了以下指南:http://echo.co/blog/os-x-107-lion-development-native-mamp-mysql-installer

我已经转移了我的网站和数据库,一切都很顺利。我唯一的问题是写作权限。例如,有一个需要写入的配置文件,我必须右键单击,转到“获取信息”,然后启用“读取和放大”。写给员工和每个人。

我无法手动完成并为每个文件/文件夹启用这些写权限。我不需要使用WAMP来做这件事,并使开发更快。

因此想知道2种可能的解决方案: a)将我的用户帐户添加到localhost的白名单中,以便644权限就足够了 b)递归设置写权限

5 个答案:

答案 0 :(得分:49)

我发现最好的解决方案是更改apache用户和组设置。有关说明,请访问:http://paulmason.name/item/change-apache-user-group-in-lion-os-x

  1. 打开终端并输入

    sudo nano /private/etc/apache2/httpd.conf
    
  2. 中查找并更改http.conf代码
    User _www
    Group _www
    

    User your_mac_username
    Group staff
    

    注意:使用Leopard等早期版本,将员工资本化为员工。您可以输入“id”并点击输入终端

  3. 来获取您的用户名和群组
  4. 重启Apache

    sudo apachectl restart
    

答案 1 :(得分:22)

我是上述博文的作者。对于Web服务器文件权限,您需要为_www用户提供文件的写访问权限。对于config.inc.php,您可以设置几种方式:

拥有_www拥有该文件并具有写权限:

$ sudo chown _www config.inc.php
$ chmod u+w config.inc.php

让您的用户拥有该文件,将该组更改为_www,并授予组写权限:

$ sudo chgrp _www config.inc.php
$ chmod g+w config.inc.php

或者,如果您觉得让所有用户都愿意写,我出于安全原因不建议这样做,请让所有用户都能写出来:

$ chmod a+w config.inc.php

如果整个文件夹需要由_www用户编写,它可以拥有该文件夹和所有文件:

$ sudo chown -R _www:_www folder/

或者您可以为所有人提供文件夹写入和执行权限:

$ chmod a+wx folder/

chmod 774给出禁止错误的原因是因为_www用户属于'4'权限,即'只读'。对于目录,用户需要“执行”才能遍历该文件夹。 chmod 775允许用户和组转到rwx,其他人转到r-x。 Here's more information on Unix file permissions

此外,您的用户可以保留完整的所有权并为_www用户添加某些权限,而不是使用访问控制列表更改所有用户的访问权限。

$ sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' folder
$ sudo chmod +a '_www allow read,write' config.inc.php

如果你要去ACL的路线,我建议你做一些阅读,看看你真正需要提供什么级别的访问。 Here is a great place to start

答案 2 :(得分:10)

我在OSX上运行Apache并为我修复了它:

sudo chown -R _www:_www <mywebfolder>
sudo chmod -R 775 <mywebfolder>

更新#1:

语法:sudo chown <user>:<group> <file-or-folder>。 OSX上的Apache用户是_www

保留所有权但授予Apache r-w-x权限:

sudo chown -R <your-username>:_www <mywebfolder>
sudo chmod -R 775 <mywebfolder>

更新#2:

我最喜欢这种方法。将Apache设置为以您的身份运行。

  1. 在终端类型id中获取uid=123(Myname)

  2. 打开/etc/apache2/httpd.conf并对其进行编辑以使用您的用户名。

    <IfModule unixd_module>
       User Myname
       Group staff
    </IfModule>
    
  3. 返回终端:sudo apachectl restart

答案 3 :(得分:2)

我建议您为Web根设置递归写入权限。

您可以使用chmod -R 774 /my/web/root通过控制台/终端执行此操作。对我来说,所有者和群组设置为:www-data:myUserName,可以使用chown进行设置。不要忘记先检查您的网络用户是谁。

修改:为了更好地理解,为什么您没有访问权限:

Chmod 774,每个号码代表特定权利:用户,组,其他。如果用户设置为www-data且组设置为www-data(Unix系统上的大多数用户位于由其用户名命名的组中)。因此,如果您不在组www-data中,则必须加入它,或者您必须更改所有者(chown)或者您必须更改权限(chmod)。有更多信息,有几个教程。

答案 4 :(得分:0)

上述解决方案对我不起作用。我所做的是:

右键单击文件夹->获取信息

enter image description here

底部有一个特权设置。

将其更改为所有人读写