You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EC2 Run-Instances用户数据脚本切换至ubuntu用户失败排查

EC2用户数据脚本切换用户失败的原因与调试方法

问题原因

  1. 用户数据脚本默认以root身份运行,su -l ubuntu仅会启动一个独立的子shell,但原脚本的后续命令仍在root的父shell中执行,因此whoami依然返回root。
  2. su -l ubuntu &> output.txt无内容是因为该命令仅切换到ubuntu用户的shell,未执行任何输出指令,且非交互式环境下子shell会直接退出,没有输出内容写入文件。

正确切换用户的方法

  • 单条命令执行:使用su -c指定以ubuntu用户运行的命令,直接在子shell中完成操作
    su -l ubuntu -c "whoami > /home/ubuntu/test_whoami.txt"
    
  • 多行命令执行:用here-doc方式包裹需要执行的命令块,确保所有命令都在ubuntu用户环境下运行
    su -l ubuntu << 'EOF'
    whoami > /home/ubuntu/test_whoami.txt
    # 在此添加其他需以ubuntu用户执行的初始化命令
    EOF
    
    注意用单引号包裹EOF,避免root shell解析命令块中的变量。

调试技巧

  • 增加调试输出:在切换用户的命令中加入调试参数,输出执行过程和环境变量
    su -l ubuntu -c "set -x; whoami; env" > /home/ubuntu/debug.log 2>&1
    
  • 查看系统日志:EC2用户数据脚本的执行日志默认存放在/var/log/cloud-init.log和/var/log/cloud-init-output.log,直接查看这些日志可获取脚本执行的完整流程和错误信息
  • 验证用户存在性:确认ubuntu用户存在(Ubuntu官方AMI默认自带,自定义镜像需手动检查),可通过cat /etc/passwd | grep ubuntu验证

内容的提问来源于stack exchange,提问作者AJ222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 21:15:35