Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS CodeDeploy以root用户身份继续运行,第一次运行后中断_Amazon Web Services_Amazon Ec2_Aws Code Deploy - Fatal编程技术网

Amazon web services AWS CodeDeploy以root用户身份继续运行,第一次运行后中断

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运行的——那么为什么有一

以前,我让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时首先使其工作,我使用本文更改了用户,并且在其他服务器上工作了几个月:


*注意:尝试删除另一篇文章中推荐的并在屏幕截图中打印的.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和编码更新的答案以使其更明显:)