Ubuntu环境下执行shell脚本出现permission denied报错的解决方案咨询
权限问题解决方案
首先确认权限报错的触发原因,按以下步骤配置即可对所有用户开放对应命令的执行权限:
1. 给shell脚本开放全局可执行权限
执行以下命令给test_image.sh开放所有用户的读、执行权限:
sudo chmod a+rx test_image.sh
- 若脚本运行过程中需要修改自身内容,可额外追加写入权限:
sudo chmod a+rwx test_image.sh,非必要场景不建议开放写入权限,避免文件被恶意篡改。
2. 解决输出文件写入权限问题
权限报错的另一常见原因是当前用户没有权限在目标目录生成testCase.txt,可二选一处理:
- 方案A:开放脚本所在目录的全局读写执行权限(目录的执行权限是正常访问的必要条件)
# 切换到test_image.sh所在目录后执行 sudo chmod a+rwx ./ - 方案B:提前创建输出文件并开放全局读写权限(比开放整个目录更安全)
sudo touch testCase.txt sudo chmod a+rw testCase.txt
3. 特殊场景:脚本本身需要root权限运行
如果test_image.sh内部逻辑需要root权限才能执行(比如访问系统级硬件、修改系统配置等),上述文件权限配置无法解决问题,可配置sudo免密执行该脚本:
- 执行
sudo visudo打开sudo配置文件 - 在文件末尾添加如下规则,注意替换为脚本的绝对路径:
ALL ALL=(ALL) NOPASSWD: /opt/your_path/test_image.sh - 保存退出后,所有用户执行
sudo /opt/your_path/test_image.sh > testCase.txt无需输入密码,Java程序直接调用带sudo的命令即可正常运行。
验证
配置完成后切换到普通用户执行原命令,确认无permission denied报错即可。
内容的提问来源于stack exchange,提问作者user17085185
相关产品推荐
相关产品推荐

