[英]Linux AWS EC2 Permissions with rsync
我正在运行默认的 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
用户添加到该目录,以便我可以在那里同步我的文件,并且服务器仍然可以访问我只是不确定如何做到这一点。
作为测试,我在此位置创建了一个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
我已经做了足够的研究和测试,知道这是一个权限错误,我只是想不出解决它的正确方法。 我是否需要创建一个组并将nginx
和ec2-user
分配给该组,然后在:/var
目录上为该组提供相同的权限级别。
旁注,我为 chown 设置什么权限级别才能使当前设置的这些权限?
我在:/etc/nginx/conf.d/
目录中有服务器配置文件,这些文件映射到我在:/var/www/html
目录中创建的目录,因此我可以在服务器上托管多个站点。
所以在这个例子中,我在:/etc/nginx/conf.d/technology.conf
有一个配置文件,它映射到:/var/www/html/technology
再次感谢您,我确实觉得我已经进行了研究和努力,以表明我已经尽我所能。
在我玩了大约一天之后,答案是有道理的。 您必须同时授予ec2-user
和nginx
组的访问权限。 我相信你永远不想把用户放在一个涉及服务器本身的组中,我认为事情会往南走。
将所有者更改为ec2-user
和nginx
组后,它仍然没有完全按照我想要的方式工作。 原因是,我需要将nginx
权限更新为他们被分配用户角色时所拥有的权限。
基本上, ec2-user
有写权限,而服务器没有。 我们希望用户拥有写权限,以便他们可以将我的本地文件 rsync 到服务器上的目录,并且nginx
组需要相同级别的权限来显示页面。 现在想来, nginx
组可能只需要读取权限就可以显示内容,但这至少暂时解决了问题。
这是我在服务器上运行的用于更新所有权和权限以及输出的命令。
修改所有权
sudo chown -R ec2-user:nginx :/var/www/html/technology
修改权限
sudo chmod -R o=rwx,g+rwx,ow technology
最终结果看起来像这样
您可以看到权限匹配,并且所有权符合我们的预期。 我唯一需要弄清楚的是在将新文件rsync
到服务器之后,我需要运行以前的代码来再次更新权限。 我相信稍后会来找我,但我希望这可以帮助处于相同情况的任何人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.