EC2用户权限

Arb*_*biz 2 permissions amazon-ec2 amazon-web-services

我刚刚设置了我的第一个AWS EC2服务器实例,我遇到了上传图片的脚本权限问题.'var/www'(和所有子目录)所有者是'ec2-user'但是apache服务器正在以'apache'运行.因此,php脚本动态创建的所有目录(使用mkdir)都拥有'apache'作为所有者(它似乎没有写入权限)我当然可以将apache用户更改为'ec2user',但我担心这可能是安全风险.这样做的正确方法是什么?谢谢你的帮助.

Kam*_*mal 10

设置Apache Web服务器的文件权限

1-使用以下命令将www组添加到EC2实例:

[ec2-user ~]$ sudo groupadd www
Run Code Online (Sandbox Code Playgroud)

2-将ec2-user用户添加到www组:

[ec2-user ~]$ sudo usermod -a -G www ec2-user
Run Code Online (Sandbox Code Playgroud)

3-要刷新权限并包含新的www组,请注销:

[ec2-user ~]$ exit
Run Code Online (Sandbox Code Playgroud)

4-再次登录并验证www组是否与组一起存在:

[ec2-user ~]$ groups
> ec2-user wheel www
Run Code Online (Sandbox Code Playgroud)

5-将/var/www目录及其内容的组所有权更改为www组:

[ec2-user ~]$ sudo chown -R root:www /var/www
Run Code Online (Sandbox Code Playgroud)

6-更改/var/www其子目录的目录权限以添加组写权限,并在将来创建的子目录上设置组ID:

[ec2-user ~]$ sudo chmod 2775 /var/www
[ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} +
Run Code Online (Sandbox Code Playgroud)

7-递归更改/var/www目录及其子目录中文件的权限,以添加组写权限:

[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} +
Run Code Online (Sandbox Code Playgroud)

  • 更多来自此链接:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Tutorials.WebServerDB.CreateWebServer.html (2认同)

Séb*_*acq 6

这是一个纯粹的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
Run Code Online (Sandbox Code Playgroud)

如您所见,所有权root不是ec2-user。你应该了解的第一件事/为什么你看到的权限/var/www/ec2-user

应该需要再次更改该目录的所有者,您可以输入:

 chown -R root:root /var/www
Run Code Online (Sandbox Code Playgroud)

让您的Web服务器(httpd)写入/var/www或以提升的特权(例如root)运行该进程不是最佳实践。如果您的应用程序确实要写入本地存储,请使用安装在单独目录中的其他卷,该目录中没有可执行文件。


Bal*_*til 6

如果您使用的是Amazon Linux 2 AMI,则步骤会有所不同

要允许 ec2-user 帐户操作此目录中的文件,您必须修改该目录的所有权和权限。有很多方法可以完成这项任务。在以下步骤中,您将 ec2-user 添加到 apache 组,以授予 apache 组 /var/www 目录的所有权,并为该组分配写入权限。

设置文件权限

将您的用户(在本例中为 ec2-user)添加到 apache 组。

[ec2-user ~]$ sudo usermod -a -G apache ec2-user
Run Code Online (Sandbox Code Playgroud)

注销并重新登录以选择新组,然后验证您的成员资格。注销(使用 exit 命令或关闭终端窗口):

[ec2-user ~]$ exit
Run Code Online (Sandbox Code Playgroud)

要验证您在 apache 组中的成员身份,请重新连接到您的实例,然后运行以下命令:

[ec2-user ~]$ groups
ec2-user adm wheel apache systemd-journal
Run Code Online (Sandbox Code Playgroud)

将 /var/www 及其内容的组所有权更改为 apache 组。

[ec2-user ~]$ sudo chown -R ec2-user:apache /var/www
Run Code Online (Sandbox Code Playgroud)

要添加组写入权限并为将来的子目录设置组 ID,请更改 /var/www 及其子目录的目录权限。

[ec2-user ~]$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
Run Code Online (Sandbox Code Playgroud)

要添加组写权限,请递归更改 /var/www 及其子目录的文件权限:

[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
Run Code Online (Sandbox Code Playgroud)

现在,ec2-user(以及 apache 组的任何未来成员)可以添加、删除和编辑 Apache 文档根目录中的文件,使您能够添加内容,例如静态网站或 PHP 应用程序。

如何设置 Amazon Linux 2 LAMP,完整详细信息请参见 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html