在Mac OS X下,Apache 2站点文件/文件夹的所有者/组/权限是否正确?


114

在网上很难找到针对Mac的针对此问题的答案,因此我希望有人可以帮我解决这个问题?我的权限在我的网站上搞砸了,我不确定如何解决这些问题,而不仅仅是对所有明显不正确的东西都使用递归777。

谢谢!

Answers:


186

这是我找到的最严格和最安全的方法,如以下~/my/web/root/针对您的Web内容的假定目录所述:

  • 对于导致Web根每个父目录(例如~/my~/my/web~/my/web/root):
    • chmod go-rwx DIR (所有者以外的任何人都不能访问内容)
    • chmod go+x DIR (以允许包括_www在内的“用户”“输入”目录)
  • sudo chgrp -R _www ~/my/web/root (所有网络内容现在都位于_www组)
  • chmod -R go-rwx ~/my/web/root (所有者以外的任何人都不能访问网络内容)
  • chmod -R g+rx ~/my/web/root (所有Web内容现在都可以由_www读取/执行/输入)

所有其他解决方案都使文件向其他本地用户(属于“ staff”组的成员,并且显然属于“ o” / others组)开放。然后,这些用户可以自由浏览和访问Web配置文件和脚本中的数据库配置,源代码或其他敏感详细信息(如果这是您的内容的一部分)。如果这对您来说不是问题,那么请务必采用一种较简单的解决方案。


3
chmod go+rx DIR在ls停止引发权限错误之前,除了在/ Users / username目录级别使用x标志之外,我还必须授予读取访问权限。想知道为什么?
bhavinb 2012年

1
@mike,所有文件和目录仍将由您(用户)拥有并且仍然是可写的。chgrp仅允许“ _www” 读取文件。
dkamins 2013年

2
对于希望网站脚本创建自己的文件夹并在webroot中写入自己的文件的系统(就像许多CMS一样),我必须向_www组授予写入权限。因此,最后一步变为chmod -R g+rwx ~/my/web/root。有任何异议或更好的方法来进行此@dkamins吗?
Jpsy 2014年

1
@Jpsy如果您的应用需要自写,那应该可以正常工作。如果其他代码也以_www的形式运行(并且可能恶意更改CMS代码),则会引入其他潜在的安全性问题,因此请小心。如果您可以将可写(g + w)限制在更深的子目录中,那就更好了。
dkamins 2014年

1
现在已经有几年历史了,时间在前进,OS X喜欢不时更改其默认Apache服务器的工作方式。因此,尽管此解决方案仍然有效,但在这一点上,我强烈建议创建本地VM来测试应用程序的替代解决方案,而不是使用OS X本身。请参阅:vagrantup.com
dkamins,2014年

30

如果您真的不喜欢终端机,这是dkamins的GUI方式,它告诉您:

1)转到您的用户主目录(ludo属于我),然后从“ 文件”菜单中选择检查器中的“ 获取信息 cmdI ”:

“获取信息”窗口的“共享和权限”部分

2)通过alt/option单击[+]符号,添加_www组并将其权限设置为只读

获取信息,突出显示“添加用户和组”并突出显示“万维网服务器”

  • 因此,请考虑(好的做法)不要将个人信息存储在用户主文件夹(和硬盘)的根目录下!
  • 如果每个人组都具有只读权限,则可以跳过此步骤,但是由于AirDrop,** / Public / Drop Box **文件夹几乎无用...

3)显示您的用户Sites文件夹的“ 获取信息”检查器,并复制步骤2,然后从齿轮操作子菜单中选择“ 应用于附件...”

“获取信息”操作子菜单“应用于随附的项目...”突出显示

Voilà3个步骤和GUI唯一的方式...


2
在这里没有帮助我,但是很高兴知道这个ALT + [+]技巧。谢谢。
2014年

1
到目前为止,这是最好的方法,alt + click显示正确的_www用户
CoolArts

如果您已激活来宾文件共享或安装了恶意php脚本,这是正确的……确保只有每个人都可以“读取”的Public and Sites文件夹。步骤3仅适用于“站点”文件夹...因此,通常不应更改其他文件夹…
llange

不需要这个。_www在所有人组中。
DarkNeuron

很高兴知道这个替代项[+]!Thx
Remi Grumeau

12

我知道这是一篇过时的文章,但是对于任何升级到Mountain Lion(10.8)并遇到类似问题的人来说,添加FollowSymLinks到您的{username} .conf文件(在/ etc / apache2 / users /中)对我来说是成功的窍门。因此文件如下所示:

<Directory "/Users/username/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

我创建了一个我不使用的用户“ git”,而该目录中的所有内容都可以用来编辑(git.conf)。一旦我按照上面为用户git所述的那样更新了文件-apache正确地提供了我设置的目录。这对我来说没有意义,因为我的用户git与创建的目录或apache无关。
ktamlyn 2013年

9

2个月大的线程,但迟到总比没有好!在10.6上,我将Web服务器文档文件夹设置为:

owner:root
group:_www
permission:755

_www是在Mac OS X下运行apache的用户。然后,我添加了一个ACL以允许对Administrators组具有完全权限。这样,我仍然可以使用管理员用户进行任何更改,而不必以root用户身份进行身份验证。另外,当我要允许网络服务器写入文件夹时,我可以简单地将chmod更改为775,让root:_www以外的所有人都只有读/执行权限(不包括我已应用的ACL)


您无需将所有者设置为“ root”,但这是无害的。您绝对不需要您拥有的o + rx权限-允许任何本地用户浏览和阅读您的所有Web内容(包括可能使用DB密码进行的配置等)
dkamins 2011年

1
(请参阅下面我对这个问题的答案,该答案是该答案的更为复杂的版本,对于那些对安全性更为偏执的人可能会很感兴趣)
dkamins 2011年

在终端中,我们如何查看例如wordpress的安装内容(关于其自身的文件权限),因为我希望wordpress能够编写其自己的媒体上载...

5

在我的10.6系统上:

vhosts folder:
 owner:root
 group:wheel
 permissions:755

vhost.conf files:
 owner:root
 group:wheel
 permissions:644

1
太好了,谢谢你,史蒂夫,以及网络文件本身?/ Library / WebServer / Documents / Library / WebServer / Documents / [文件] / Library / WebServer / Documents / [目录]
Fo。

0

我的用户所有者是管理员用户,组是_www,并使用目录和文件664的权限设置为775。



-3

首先打开终端,然后转到Web服务器目录

cd /Library/WebServer/Documents

然后键入这一点,你会做什么是你会给readwrite许可

sudo chmod -R o+w /Library/WebServer/Documents

这肯定会工作!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.