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

EC2 Linux实例从AWS CodeCommit执行Git Pull权限拒绝问题求助

解决EC2 Linux实例git pull CodeCommit时的权限拒绝问题

核心排查方向

既然新实例和新仓库能正常拉取,说明SSH配置、CodeCommit权限无问题,问题出在现有EC2实例的本地文件/用户上下文上,按以下步骤逐一排查:


1. 确认执行git命令的用户与目录所有者匹配

你已将目录所有者改为ubuntu,但可能执行git的是其他用户(比如root,或部署脚本用sudo运行):

  • 查看当前执行命令的用户:
    whoami
    
  • 查看目录文件的所有者/组:
    ls -la /path/to/your/repo
    
  • 如果用户不匹配:
    • 切换到ubuntu用户执行命令:sudo -u ubuntu git pull
    • 或修改部署脚本,确保以ubuntu用户身份运行(避免用sudo,除非必要)

2. 检查文件的ACL权限(常规chmod/chown可能覆盖不了)

部分系统会用ACL额外限制文件权限,执行以下命令排查:

  • 查看目标文件的ACL规则:
    getfacl /path/to/your/repo/.gitignore
    getfacl /path/to/your/repo/<to>/<folder>/index.html
    
  • 如果存在限制规则,给ubuntu用户添加完整权限:
    setfacl -R -m u:ubuntu:rwx /path/to/your/repo
    
  • 或者清除所有ACL规则(谨慎操作,确保不会影响其他应用):
    setfacl -R -b /path/to/your/repo
    

3. 检查是否有进程占用目标文件

如果Web服务(如Nginx、Apache)或其他进程正在使用被修改的文件,会导致git无法删除/创建文件:

  • 查找占用文件的进程:
    lsof | grep "/path/to/your/repo/<to>/<folder>/index.html"
    
  • 临时停止占用服务,拉取完成后再重启:
    sudo systemctl stop nginx  # 替换成你的服务名
    git pull
    sudo systemctl start nginx
    

4. 修复git仓库的安全目录配置

Git新版本会检查仓库所有者是否与当前用户一致,否则会限制操作:

  • 先确保.git目录所有者正确:
    sudo chown -R ubuntu:ubuntu /path/to/your/repo/.git
    
  • 添加仓库到git安全目录列表:
    git config --global --add safe.directory /path/to/your/repo
    

5. 极端方案:重新克隆仓库(确保仓库本身无问题)

如果上述方法都无效,备份现有修改后重新克隆:

  • 备份当前仓库:
    mv /path/to/your/repo /path/to/your/repo_backup
    
  • 以ubuntu用户身份重新克隆:
    sudo -u ubuntu git clone ssh://git-codecommit.us-west-2.amazonaws.com/v1/repos/<my-repo> /path/to/your/repo
    
  • 恢复备份中的自定义修改文件(注意不要覆盖.git目录)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:12:17