为什么HTTP进程无法使用组权限写入目录?

时间:2017-03-27 21:21:29

标签: macos apache amazon-web-services amazon-ec2 permissions

我在亚马逊实例和我的Mac上都遇到了问题。

我有两个用户

  • ec2-user:ec2-user(Mac的myuser:staff
  • apache:ec2-user(Mac的_www:staff


如果我有apache创建的目录,则ec2-user可以完美地在其下面写下

drwxrwsr-x 3 apache ec2-user 4.0K Mar 27 20:37 /path/to/sample/dir
// ec2-user can write here

但是在相反的情况下,如果ec2-user是目录的所有者,当apache尝试在其下面写入时,它会抛出一条错误,说它没有足够的权限。

drwxrwsr-x 3 ec2-user ec2-user 4.0K Mar 27 20:37 /path/to/sample/dir
// apache CANNOT write here

但如果我将权限更改为777,那么`apache就可以在其中写入

drwxrwsrwx 3 ec2-user ec2-user 4.0K Mar 27 20:37 /path/to/sample/dir
// apache CAN write here
// file created would have `664 apache:ec2-user` permissions

所以问题是

为什么虽然这两个用户具有相同的组,apache无法写入明显具有该组写权限的目录?

其他
虽然apacheec2-user作为组写入,但是当我执行以下操作时,我意识到apache不属于ec2-user组,所以当它写入时,文件和目录由何时创建它有这样的团体吗?

sudo -u apache id
uid=48(apache) gid=48(apache) groups=48(apache)

1 个答案:

答案 0 :(得分:0)

经过进一步研究并与一些SysAdmins交谈后,答案直接进入了apache所属的群体。

无论apache目录文件具有ec2-user组的因素如何,并不意味着apache属于该组。

因此,要解决此特定请求,我只需要将Apache添加到ec2-user组。

sudo usermod -a -G ec2-user apache

我还没有很好地弄清楚mac版本,但是它采用了dseditgroup命令的方式。