Amazon web services AWS CodeDeploy以root用户身份继续运行,第一次运行后中断
以前,我让CodeDeploy作为用户www数据正常运行,一切都很好,但我认为CodeDeploy在某种程度上被破坏了,因为它现在总是作为根用户运行。然后,由于“错误权限”,它中断了mid部署,因为它不应该尝试以根用户身份运行,而是以www数据用户身份运行 我检查了另一台运行CodeDeploy设置的工作服务器,设置匹配,但运行“ps aux | grep CodeDeploy agent”后没有根用户条目,如下所示: CodeDeploy在这里说它是以PID 3914运行的——那么为什么有一个PID为3650的根条目呢?我认为它在运行CodeDeploy时也使用根条目PID 3650,因为它正在创建具有“root:root”权限的新目录。然而,在工作服务器上,一切都是用我配置的“www-data:wheel”创建的 那么,如何在不破坏任何其他内容的情况下,从这里删除根用户执行所有操作?(我不喜欢在不知道是否安全的情况下删除内容,这也是另一个团队使用的服务器,因此我试图避免完全重建或卸载,以及破坏他们的任何内容。) 仅供参考,为了在www数据运行CodeDeploy时首先使其工作,我使用本文更改了用户,并且在其他服务器上工作了几个月:Amazon web services AWS CodeDeploy以root用户身份继续运行,第一次运行后中断,amazon-web-services,amazon-ec2,aws-code-deploy,Amazon Web Services,Amazon Ec2,Aws Code Deploy,以前,我让CodeDeploy作为用户www数据正常运行,一切都很好,但我认为CodeDeploy在某种程度上被破坏了,因为它现在总是作为根用户运行。然后,由于“错误权限”,它中断了mid部署,因为它不应该尝试以根用户身份运行,而是以www数据用户身份运行 我检查了另一台运行CodeDeploy设置的工作服务器,设置匹配,但运行“ps aux | grep CodeDeploy agent”后没有根用户条目,如下所示: CodeDeploy在这里说它是以PID 3914运行的——那么为什么有一
*注意:尝试删除另一篇文章中推荐的并在屏幕截图中打印的.pid和.pid.lock文件,但没有任何作用。这将归结为对CodeDeploy代理的更新。可能是更新过程中的意外更换,也可能是要求将设置重置为默认设置的不兼容更改 我建议保留CodeDeploy的这些默认设置,因为它可以在修补或将来的更新过程中重新配置(这将使它不受您的控制)。而是通过设置权限 您可以定义CodeDeploy中的操作通过每个部署所需的appspec文件运行的用户 通过指定
runas
钩子将作为该用户运行,如下例所示
version: 0.0
os: linux
files:
- source: Config/config.txt
destination: /webapps/Config
- source: source
destination: /webapps/myApp
hooks:
BeforeInstall:
- location: Scripts/UnzipResourceBundle.sh
- location: Scripts/UnzipDataBundle.sh
AfterInstall:
- location: Scripts/RunResourceTests.sh
timeout: 180
ApplicationStart:
- location: Scripts/RunFunctionalTests.sh
timeout: 3600
ValidateService:
- location: Scripts/MonitorService.sh
timeout: 3600
runas: codedeployuser
您还可以(从
文件层次结构中)设置特定目录或文件所具有的属性。这将归结为对CodeDeploy代理的更新。可能是更新过程中的意外替换,也可能是要求将设置重置为默认设置的不兼容更改
我建议保留CodeDeploy的这些默认设置,因为它可以在修补或将来的更新过程中重新配置(这使它不受您的控制)
您可以定义CodeDeploy中的操作通过每个部署所需的appspec文件运行的用户
通过指定runas
钩子将作为该用户运行,如下例所示
version: 0.0
os: linux
files:
- source: Config/config.txt
destination: /webapps/Config
- source: source
destination: /webapps/myApp
hooks:
BeforeInstall:
- location: Scripts/UnzipResourceBundle.sh
- location: Scripts/UnzipDataBundle.sh
AfterInstall:
- location: Scripts/RunResourceTests.sh
timeout: 180
ApplicationStart:
- location: Scripts/RunFunctionalTests.sh
timeout: 3600
ValidateService:
- location: Scripts/MonitorService.sh
timeout: 3600
runas: codedeployuser
您还可以设置特定目录或文件所具有的属性(从文件层次结构中)。感谢您关于修补或未来更新的说明,Chris!发现AWS自动更新(我甚至不知道这些设置会发生或知道它们做了什么)在第一次创建实例时已重置/删除以前的配置。一旦我重新运行所有这些服务器配置(如sudo access)一切都恢复了正常-所以是AWS更新破坏了一切。不确定是否有地方我可以检查这些AWS更新以作记录?我也喜欢你的CodeDeploy建议。TY由于安装程序是由AWS提供的,我认为它会保留配置,但我猜有时破坏更改可能会重置此设置。你可能会必须禁用自动更新,然后手动更新(之后再次应用配置更改),这并不理想,因为这是手动干预:(是的,我绝对不想禁用更新。我只需要每天在cron作业或其他东西上获取脚本?我认为只是sudo访问从更新中被切断,因为它在/etc/sudoers.dAlso中删除了我的自定义sudo文件,不确定您是否可以用不同的措辞重新提交您的答案,以便我可以标记为正确?CodeDeploy以root用户身份运行,因为AWS更新通过重置它们打破了以前的服务器配置,然后编码部署用户www数据丢失sudo访问。一旦使用权限重新配置了服务器,它就工作了!@Foreverlearning和编码更新的答案以使其更明显:)感谢您提供关于修补或未来更新的说明,Chris!发现AWS自动更新(我甚至不知道设置会发生什么或它们做了什么)在实例首次创建时重置/删除了以前的配置。一旦我重新运行所有这些服务器配置(如sudo access)一切都恢复了正常-所以是AWS更新破坏了一切。不确定是否有地方我可以检查这些AWS更新以作记录?我也喜欢你的CodeDeploy建议。TY由于安装程序是由AWS提供的,我认为它会保留配置,但我猜有时破坏更改可能会重置此设置。你可能会必须禁用自动更新,然后手动更新(之后再次应用配置更改),这并不理想,因为这是手动干预:(是的,我绝对不想禁用更新。我只需要每天在cron作业或其他东西上获取脚本?我认为只是sudo访问从更新中被切断,因为它在/etc/sudoers.dAlso中删除了我的自定义sudo文件,不确定您是否可以用不同的措辞重新提交您的答案,以便我可以标记为正确?CodeDeploy以root用户身份运行,因为AWS更新通过重置它们打破了以前的服务器配置,然后编码部署用户www数据丢失sudo访问。一旦使用权限重新配置了服务器,它就工作了!@Foreverlearning和编码更新的答案以使其更明显:)