通过AWS Sessions Manager在EC2执行文件的运行用户及查询方法
关于AWS SSM Run Command执行Shell脚本的运行用户问题解答
默认执行用户说明
- 默认情况下,Linux EC2实例中的SSM Agent服务本身以
root身份运行,因此你通过Run Command提交的Shell脚本默认也会以root用户身份执行 - 如果你需要指定其他用户执行脚本,可以在脚本内容中通过
su - 目标用户名 -c "要执行的命令/脚本路径"的方式手动切换身份,也可以在Run Command的AWS-RunShellScript文档参数中配置runas字段指定执行用户
确认脚本实际执行用户的方法
- 方法1:在待执行的Shell脚本开头加入身份查询命令,执行后直接查看Run Command返回的输出结果
示例脚本片段:# 输出当前执行用户的用户名 whoami # 输出更完整的用户ID、用户组信息 id # 后续是你的原有脚本逻辑 - 方法2:在脚本中将用户信息持久化写入实例本地文件,后续登录实例查看即可
示例代码:
日志文件可自定义路径,确保对执行用户可写即可echo "执行时间: $(date) 执行用户: $(whoami)" >> /var/tmp/ssm_execution_record.log - 方法3:直接查看EC2实例本地存储的SSM执行日志
Linux实例中SSM命令执行的标准输出日志默认存放在/var/lib/amazon/ssm/[你的实例ID]/document/orchestration/[对应Run Command命令ID]/awsrunShellScript/stdout,打开该文件即可看到你输出的用户信息,也可以查看SSM Agent全局日志/var/log/amazon/ssm/amazon-ssm-agent.log确认执行上下文
内容的提问来源于stack exchange,提问作者lflflf
相关产品推荐
相关产品推荐

