为了设置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 {} +
这是一个纯粹的Linux权限问题,与AWS无关。 我刚刚创建了一个Amazon Linux实例,并验证了在/var目录下的权限。
[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)运行该进程并非最佳实践。
如果您的应用程序确实需要写入本地存储,请使用不同的卷,挂载在单独的目录中,在那里没有可执行文件可用。
[ec2-user ~]$ sudo usermod -a -G apache ec2-user
注销,然后再次登录以获取新组,并验证您的成员资格。 注销(使用退出命令或关闭终端窗口):
[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
[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
sudo chown -R root:ec2-user /var/www
sudo chmod -R 770 -R /var/www
之后,您将能够创建目录到 /var/www。希望这个建议对您的问题有所帮助。