gpt4 book ai didi

bash - 如何以不同用户身份在 AWS Cloud Formation 启动时运行脚本?

转载 作者:行者123 更新时间:2023-11-29 09:03:45 24 4
gpt4 key购买 nike

我在启动 AWS Ubuntu 实例(从 Cloud Formation 模板)并在启动时成功运行脚本时遇到了很多麻烦。该脚本确实可以运行,但我不希望它以 root 身份运行。我希望脚本作为不同的用户被调用,或者当脚本运行时脚本更改用户。

由于我们正在尝试使用 Cloud Formation,因此我需要将脚本或对脚本的引用放入我的模板文件中。我的模板文件的相关部分如下。脚本“myScript.sh”确实运行,但始终以 root 身份运行。

"MyImage" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"ImageId" : "xxxxxx",
"KeyName" : "xxxxxx",
"SecurityGroups" : [ "xxxxxx" ],
"UserData" : {"Fn::Base64" : {"Fn::Join" : ["", [
"#include\n",
"https://s3-eu-west-1.amazonaws.com/aFolder/myScript.sh \n"
] ] } }
}
}
},

来自网址:http://alestic.com/2009/06/ec2-user-data-scripts它声明这些脚本始终以 root 身份运行。因此,我决定修改脚本来更改用户。下面是一个示例脚本,它不执行我想要的操作。我对其进行了内联评论以解释每个阶段的作用:

#!/bin/bash

whoami > /home/ubuntu/who1.txt # Always returns 'root'
su ubuntu # Appears to have no effect. Ubuntu user does exist
whoami > /home/ubuntu/who2.txt # Always returns 'root'

su ubuntu echo fish > /home/ubuntu/aFile.txt # File is not created

sudo -u ubuntu bash # Appears to have no effect
whoami > /home/ubuntu/who3.txt # Always returns 'root'

我猜我的脚本存在根本性的错误,但我就是看不出来!有没有人对 AWS 和 Cloud Formation 有任何经验,你是否成功运行了一个非根目录的脚本?我真的不希望脚本以 root 身份运行,因为将要启动的事件不应该在 root 级别拥有。

谢谢,菲尔

最佳答案

su 不会更改脚本其余部分的用户,它会为您指定的用户启动一个新的交互式 shell。在像此处的脚本这样的非交互式上下文中,该 shell 会立即退出,因为它无事可做。

参见 this question有关如何更改一系列命令的用户的一些建议。或者,对于单个命令,您可以执行 sudo -u ubuntu [...]

关于bash - 如何以不同用户身份在 AWS Cloud Formation 启动时运行脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16733633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com