【问题标题】:Linux AWS EC2 Permissions with rsync具有 rsync 的 Linux AWS EC2 权限
【发布时间】:2021-09-25 05:02:47
【问题描述】:

我正在运行一个默认的 t2.nano ec2 linux ami。它没有任何改变。我正在尝试将我的本地更改同步到服务器。有一个权限问题,我不太了解如何解决。

我的结构如下。我正在尝试将我的工作推送到技术目录。技术目录映射到暂存域。即 technology.staging.com

:/var/www/html/technology

这是从根开始的,它工作正常,是 rsync 失败了。

当我在本地推送到该目录时,我收到“失败:权限被拒绝 (13)”错误。

我正在运行一个 nginx 服务器,并为 www 目录分配了如下权限:

sudo chown -R nginx:nginx /var/www

我的用户是 ec2-user,这是正常的默认值。这是我被绊倒的地方。您可以看到var 目录被授予root 访问权限。

您可以看到www 目录的权限设置为nginx,因此我们的服务器可以访问这些文件。我相信我需要将 ec2-user 以及 nginx 用户添加到此目录,以便我可以在那里 rsync 我的文件并且服务器仍然可以访问我只是不确定如何做到这一点。

作为测试,我在这个位置创建了一个test 目录,它运行成功。

:/home/ec2-user/test

你可以看到这里的权限是为ec2-user 设置的,这就是我确定它有效的原因。

这是我在本地机器上运行的命令,用于 rsync 失败的文件。

rsync -azP -e "ssh -i /Users/username/devwork/company/comp.pem" company_technology/ ec2-user@1.2.3.4:/var/www/html/technology

这是有效的命令。

rsync -azP -e "ssh -i /Users/username/devwork/company/comp.pem" company_technology/ ec2-user@1.2.3.4:/home/ec2-user/test

我已经做了足够的研究和测试,知道这是一个权限错误,我只是想不出解决它的正确方法。我是否需要创建一个组并将nginxec2-user 分配给该组,然后在:/var 目录上为该组赋予相同的权限级别。

旁注,我为 chown 设置了哪些权限级别才能获得当前设置的这些权限?

我在:/etc/nginx/conf.d/ 目录中有服务器配置文件,这些文件映射到我在:/var/www/html 目录中创建的目录,因此我可以在服务器上托管多个站点。

所以在这个例子中,我在:/etc/nginx/conf.d/technology.conf 有一个配置文件,它映射到:/var/www/html/technology 的目录

再次提前谢谢你,我确实觉得我已经付出了研究和努力,以表明我已经做到了我所知道的。

【问题讨论】:

    标签: linux amazon-web-services nginx amazon-ec2


    【解决方案1】:

    在我玩了大约一天之后,答案才有意义。您必须同时授予ec2-usernginx 组的访问权限。我相信您永远不想将用户放在涉及服务器本身的组中,我认为事情会向南。

    将所有者更改为ec2-usernginx 组后,它仍然不能完全按照我想要的方式工作。原因是,我需要将 nginx 权限更新为他们被分配用户角色时所拥有的权限。

    基本上,ec2-user 有写权限,而服务器没有。我们希望用户具有写权限,以便他们可以将我的本地文件同步到服务器上的目录,nginx 组需要相同级别的权限才能显示页面。现在想来,nginx 组可能只需要读取权限即可显示内容,但这至少暂时解决了问题。

    这是我在服务器上运行的用于更新所有权和权限以及输出的命令。

    修改所有权

    sudo chown -R ec2-user:nginx :/var/www/html/technology

    修改权限

    sudo chmod -R o=rwx,g+rwx,o-w technology

    最终结果是这样的

    您可以看到权限匹配,并且所有权符合我们的预期。我唯一需要弄清楚的是,在我rsync 新文件到服务器之后,我需要运行之前的代码来再次更新权限。我确信稍后会遇到,但我希望这对处于相同情况的任何人有所帮助。

    【讨论】:

    • rsync 保留文件权限;你为什么不在开发机器上复制数字UID/GID?如果这不是一个选项,请在 taget 目录树上建立一个 inotifywait ,然后在 write-close 事件上运行 chmod/chown
    猜你喜欢
    • 1970-01-01
    • 2016-07-12
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多