写权限 - localhost - Mac OSX

Pau*_*son 22 php apache macos privileges localhost

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

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

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

所以想知道两个可能的解决方案:a)将我的用户帐户添加到localhost的白名单,以便644特权足够b)递归设置写权限

Pau*_*son 49

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

  1. 打开终端并输入

    sudo nano /private/etc/apache2/httpd.conf
    
    Run Code Online (Sandbox Code Playgroud)
  2. 查找并更改http.conf代码

    User _www
    Group _www
    
    Run Code Online (Sandbox Code Playgroud)

    User your_mac_username
    Group staff
    
    Run Code Online (Sandbox Code Playgroud)

    注意:使用Leopard等早期版本,将员工资本化为员工.您可以输入"id"并点击在终端输入来获取您的用户名和组

  3. 重启Apache

    sudo apachectl restart
    
    Run Code Online (Sandbox Code Playgroud)

  • 工作得很好.其他人注意:每次更新都会重置此项. (2认同)

Ala*_*vey 23

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

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

$ sudo chown _www config.inc.php
$ chmod u+w config.inc.php
Run Code Online (Sandbox Code Playgroud)

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

$ sudo chgrp _www config.inc.php
$ chmod g+w config.inc.php
Run Code Online (Sandbox Code Playgroud)

或者,如果您觉得允许所有用户编写,我出于安全原因不建议写入,请让所有用户都能够编写:

$ chmod a+w config.inc.php
Run Code Online (Sandbox Code Playgroud)

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

$ sudo chown -R _www:_www folder/
Run Code Online (Sandbox Code Playgroud)

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

$ chmod a+wx folder/
Run Code Online (Sandbox Code Playgroud)

之所以chmod 774给你禁止错误是因为_www用户属于'4'权限,这是'只读'.对于目录,用户需要"执行"才能遍历该文件夹.chmod 775允许用户和组到rwx,其他人到rx.这里有关于Unix文件权限的更多信息.

此外,您的用户可以保留完整的所有权并为_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
Run Code Online (Sandbox Code Playgroud)

如果你打算走ACL路线,我建议你做一些阅读,看看你真正需要提供什么级别的访问.这是一个很好的起点.


Jus*_*tin 10

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

sudo chown -R _www:_www <mywebfolder>
sudo chmod -R 775 <mywebfolder>
Run Code Online (Sandbox Code Playgroud)

更新#1:

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

要保留所有权,但要授予Apache rwx权限:

sudo chown -R <your-username>:_www <mywebfolder>
sudo chmod -R 775 <mywebfolder>
Run Code Online (Sandbox Code Playgroud)

更新#2:

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

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

  2. 打开/etc/apache2/httpd.conf并编辑它以使用您的用户名.

    <IfModule unixd_module>
       User Myname
       Group staff
    </IfModule>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 回到终端: sudo apachectl restart