我在启动 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"
] ] } }
}
}
},
来自 URL: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 身份运行,因为将要启动的活动不应该在 root 级别拥有。
谢谢,菲尔