我刚刚设置了我的第一个AWS EC2服务器实例,并且我遇到了上传图片的脚本权限问题。 '无功/网络' (以及所有子目录)所有者是' ec2-user'但是apache服务器正在运行为“apache”#。 因此,php脚本动态创建的所有目录(使用mkdir)都有' apache'作为所有者(它似乎没有写入权限) 我当然可以将apache用户改为' ec2user'但我担心这可能会带来安全风险。这样做的正确方法是什么? 谢谢你的帮助。
答案 0 :(得分:6)
设置Apache Web服务器的文件权限
1-使用以下命令将www组添加到EC2实例:
[ec2-user ~]$ sudo groupadd www
2-将ec2-user用户添加到www组:
[ec2-user ~]$ sudo usermod -a -G www ec2-user
3-要刷新您的权限并添加新的www组,请注销:
[ec2-user ~]$ exit
4-再次登录并验证www组是否存在以及组:
[ec2-user ~]$ groups
> ec2-user wheel www
5-将/var/www
目录及其内容的组所有权更改为www组:
[ec2-user ~]$ sudo chown -R root:www /var/www
6-更改/var/www
及其子目录的目录权限,以添加组写权限,并在将来创建的子目录上设置组ID:
[ec2-user ~]$ sudo chmod 2775 /var/www
[ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} +
7-递归更改/var/www
目录及其子目录中文件的权限,以添加组写权限:
[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} +
答案 1 :(得分:4)
这是一个纯Linux权限问题,而不是AWS问题。 我刚刚在/ var
中创建了一个Amazon Linux实例并验证了权限 [ec2-user@ip-1-1-1-174 ~]$ ls -ald /var/www
drwxr-xr-x 7 root root 4096 Oct 22 23:34 /var/www
如您所见,所有权为root
而非ec2-user
。您应该首先了解/var/www/
对ec2-user
需要再次更改该目录的所有者,您可以输入:
chown -R root:root /var/www
最佳做法是让您的Web服务器(httpd
)写入/var/www
,也不要使用提升的权限(例如root)运行该进程。
如果您的应用程序真的写入本地存储,请使用安装在单独目录中的其他卷,其中没有可执行文件可用。
答案 2 :(得分:0)
如果您使用的是 Amazon Linux 2 AMI ,则步骤会有所不同
要允许ec2-user帐户操作此目录中的文件,必须修改目录的所有权和权限。有很多方法可以完成此任务。在以下步骤中,将ec2-user添加到apache组中,以授予apache组对/ var / www目录的所有权,并为该组分配写权限。
设置文件权限
将您的用户(在本例中为ec2-user)添加到apache组。
[ec2-user ~]$ sudo usermod -a -G apache ec2-user
注销,然后再次登录以选择新组,然后验证您的成员身份。 注销(使用exit命令或关闭终端窗口):
[ec2-user ~]$ exit
要验证您在apache组中的成员身份,请重新连接到您的实例,然后运行以下命令:
[ec2-user ~]$ groups
ec2-user adm wheel apache systemd-journal
将/ var / www的组所有权及其内容更改为apache组。
[ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
要添加组写权限并在以后的子目录上设置组ID,请更改/ var / www及其子目录的目录权限。
[ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
要添加组写权限,请递归更改/ var / www及其子目录的文件权限:
[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
现在,ec2-user(以及apache组的任何将来的成员)可以在Apache文档根目录中添加,删除和编辑文件,从而使您可以添加内容,例如静态网站或PHP应用程序。
如何设置Amazon Linux 2 LAMP,完整详细信息在这里 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html