OSX Mountain Lion和Apache 2.2.22。
我一直把httpd.conf设置为:
用户www组www
它正在运行。 直到今天。 重新启动服务器的另一个原因,当我试图通过FTP在今天晚上的FTP网站的一些变化,它说,访问被拒绝。 必须看看进程和httpd现在运行为_www。 WTH?
现在当然,我所有的用户都会得到拒绝的消息,因为他们都是由www用户创build和允许的,而不是_www。
任何想法,为什么发生这种事情,或者我可能做了什么事情呢?
一个快速的networkingsearch显示,至less从Leopard开始,_www是安装OS X的apache的用户/组。
如果你认为这是因为用户名改变了,你就会吠叫错误的树。 这个名字很可能没有改变,你只是没有注意到下划线。
在OS X的默认用户设置中,www是_www用户的别名(与www类似,是_www组的别名)。 请注意这里的RecordName列表:
$ dscl . -read /Users/www AppleMetaNodeLocation: /Local/Default GeneratedUID: FFFFEEEE-DDDD-CCCC-BBBB-AAAA00000046 NFSHomeDirectory: /Library/WebServer Password: * PrimaryGroupID: 70 RealName: World Wide Web Server RecordName: _www www RecordType: dsRecTypeStandard:Users UniqueID: 70 UserShell: /usr/bin/false $ dscl . -read /Groups/www AppleMetaNodeLocation: /Local/Default GeneratedUID: ABCDEFAB-CDEF-ABCD-EFAB-CDEF00000046 GroupMembers: FFFFEEEE-DDDD-CCCC-BBBB-AAAA000000DC FFFFEEEE-DDDD-CCCC-BBBB-AAAA0000005E GroupMembership: _devicemgr _teamsserver Password: * PrimaryGroupID: 70 RealName: World Wide Web Server RecordName: _www www RecordType: dsRecTypeStandard:Groups
发生在我身上的一种可能性是,你可能以某种方式创build了另一个名为www的帐户,而系统在这个与内置的帐户之间变得混乱。 你可以用dscl的search命令检查这个。 以下是输出结果:
$ dscl . -search /Users RecordName www _www RecordName = ( "_www", www ) $ dscl . -search /Users RealName www [no output]
如果您看到RecordName = www或RealName = www的任何其他匹配,那几乎肯定是问题所在。 另一件要检查的问题是您无法访问的文件的数字文件所有权,使用ls -ln 。 如果它们被分配给用户和/或组70,则这是内置系统用户和组。 请注意,取决于您的网站设置,networking文件不分配给networking服务器是完全正常的(甚至是理想的),所以它们被分配到别的东西不一定是麻烦的迹象。