我在亚马逊实例和我的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
无法写入明显具有该组写权限的目录?
其他:
虽然apache
以ec2-user
作为组写入,但是当我执行以下操作时,我意识到apache不属于ec2-user
组,所以当它写入时,文件和目录由何时创建它有这样的团体吗?
sudo -u apache id
uid=48(apache) gid=48(apache) groups=48(apache)
答案 0 :(得分:0)
经过进一步研究并与一些SysAdmins交谈后,答案直接进入了apache
所属的群体。
无论apache
目录文件具有ec2-user
组的因素如何,并不意味着apache
属于该组。
因此,要解决此特定请求,我只需要将Apache添加到ec2-user
组。
sudo usermod -a -G ec2-user apache
我还没有很好地弄清楚mac版本,但是它采用了dseditgroup
命令的方式。