2011-11-07 71 views
16

我是新来的mac世界,并刚刚建立我的网络服务器。我使用了以下指南:http://echo.co/blog/os-x-107-lion-development-native-mamp-mysql-installer写权限 - 本地主机 - Mac OSX

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

我无法手动通过并为每个文件/文件夹启用这些写入权限。我不需要使用WAMP来做到这一点,并且使开发速度更快。

所以想了解一下2种可能的解决方案: 一)我的用户帐户添加到白名单的本地主机,使644个的权限就足矣 B)设置写入权限递归

回答

39

我发现最好的解决方案是更改apache用户和组设置。这些指令可以在这里找到:http://paulmason.name/item/change-apache-user-group-in-lion-os-x

  1. 打开终端,并从

    User _www 
    Group _www 
    

    输入

    sudo nano /private/etc/apache2/httpd.conf 
    
  2. 查找和更改http.conf的代码要

    User your_mac_username 
    Group staff 
    

    注意:W像Leopard这样的早期版本,将员工资本化为员工。您可以通过键入“ID”,打在了终端进入

  3. 重启Apache

    sudo apachectl restart 
    
+0

最简单的解决方案!用户和apache都可以在不更改权限的情况下获得写入/读取权限;-) –

+0

为什么它将集团视为员工非常重要?我在Linux和Mac上工作,在Linux上,组是用户名,但在Mac上,我不得不退出员工,否则Apache将无法启动。 –

+0

升级到macOS Sierra将httpd.conf中的'User'和'Group'值覆盖为'_www'和'_www'。您的答案帮助我解决了我遇到的权限问题,将相关目录的所有者设置为这些新值的“User”和“Group”。 – gmeben

2

我建议设置写入权限递归你的网站根。

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

编辑:为了更好地理解,为什么你没有访问:

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

+1

我只是试图运行'chmod -R 774'为我的网站之一,它使整个网站被禁止,直到我用'搭配chmod -R 777'其似乎不正确。有任何想法吗?另外我不知道如何检查我的网络用户是谁,你能解释一下吗? –

+0

您还必须检查文件的所有者(用户ls -l为此)。大多数文件夹被设置为'www-data:www-data'。这意味着,你没有被提及,你没有访问,直到你使用'chmod 777'。最后7代表“其他”。就像我在我的回答中提到的那样设置所有者。我会编辑我的答案以更多地解释它。 – sascha

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

+0

感谢所有帮助。只是想知道为什么我会改变config.inc.php的所有者,我在哪里可以找到它? –

+0

@alanthing将权限授予apache以在您的机器上写入(任何?)文件是否有风险? – gen

9

我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