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

Linux下用sudo运行.py文件触发Errno 13权限拒绝问题求助

解决sudo运行Python脚本时的Errno 13权限问题

核心排查与修复步骤

你提到所有Python脚本用sudo运行都触发权限错误,这并非单个脚本或keyboard模块的问题,大概率是sudo环境下的Python路径/权限配置异常,按以下步骤逐一排查:

1. 验证sudo与普通用户的Python路径差异

sudo默认会重置PATH到系统安全路径,可能导致调用的Python解释器和你预期的不一致:

  • 查看普通用户的Python路径:
    which python3
    
  • 查看sudo环境下的Python路径:
    sudo which python3
    
  • 如果两者路径不同,直接用完整路径运行脚本测试:
    sudo /usr/bin/python3 your_script.py
    
    (把/usr/bin/python3换成你普通用户的Python路径)

2. 调整sudoers的secure_path配置

sudo的secure_path会限制可执行文件的搜索路径,若你的Python解释器不在默认路径里,就会触发权限类错误:

  • 用visudo编辑sudoers文件(必须用这个命令,避免语法错误锁死sudo):
    sudo visudo
    
  • 找到Defaults secure_path行,将你的Python解释器所在路径追加进去,比如:
    Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/your_user/.local/bin"
    
  • 保存退出后重新测试脚本。

3. 检查Python安装目录的权限

如果你的Python是用户级安装(比如用pip install --user),root用户可能无法访问该目录:

  • 查看Python安装前缀目录:
    python3 -c "import sys; print(sys.prefix)"
    
  • 给该目录添加全局读权限:
    sudo chmod -R o+rX $(python3 -c "import sys; print(sys.prefix)")
    

4. 针对keyboard模块的额外验证

虽然所有脚本都报错,但仍需确认模块的安装位置:

  • 查看keyboard模块路径:
    python3 -c "import keyboard; print(keyboard.__file__)"
    
  • 如果模块在用户目录下,sudo运行时可能无法加载,用root身份重新安装:
    sudo pip3 install keyboard --force-reinstall
    

5. 用最小脚本验证环境

写一个极简脚本test.py:

print("Test sudo Python execution")

用sudo python3 test.py运行,若仍报错,说明问题完全在Python的sudo环境配置,与keyboard模块无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:17:05