根本原因是脚本缺少可执行位(x),需通过chmod +x授权、图形界面勾选“允许作为程序执行”、bash/sh显式调用或修复noexec挂载限制四种方式解决;其中chmod +x最通用,图形操作适合新手,bash script.sh可绕过权限检查,noexec需remount exec解除。

统信UOS系统运行.sh或.py脚本时提示“Permission denied”,说明当前用户无权执行该文件——Linux内核强制校验可执行位(x),哪怕脚本语法完全正确、路径准确无误,只要没设+x,./script.sh就必然失败。
用chmod命令快速赋权
这是最底层、最通用的解决方式,直接修改文件权限位,适用于所有UOS版本及后续升级。
打开终端,进入脚本所在目录:cd ~/Downloads
执行ls -l install.sh查看权限,若显示-rw-r--r--,说明确实缺少执行位。
执行授权:chmod +x install.sh【不要加sudo,除非该文件属主不是当前用户;加sudo可能改变文件所有权,导致图形界面双击失效】
验证是否成功:ls -l install.sh,应看到权限变为-rwxr-xr-x(末尾出现x)
运行脚本:./install.sh
图形界面点选授权
适合不熟悉命令行的用户,操作直观,即时生效,但仅对当前用户有效。
在文件管理器中右键点击目标脚本 → 选择“属性”
切换到“权限”选项卡
勾选“允许作为程序执行文件”
若需同组或其他用户也能运行,再分别勾选“组”和“其他”下的“执行”复选框
点击“应用”保存,关闭窗口后双击脚本即可触发执行确认弹窗【务必选择“在终端中运行”,而非“运行”——后者会尝试在图形环境直接执行,多数shell脚本会闪退】
不改权限也能临时运行
当你只想快速验证脚本逻辑是否通顺,又不想永久修改权限,可用解释器显式调用——它绕过x检查,但不继承脚本首行声明的环境。
方法一:bash script.sh
方法二:sh script.sh(兼容性更强,但不支持bash特有语法如数组、[[ ]]判断)
方法三:/bin/bash script.sh(明确指定解释器路径,避免PATH污染干扰)
【关键区别:用bash/sh调用时,脚本名前不加./,也不需要chmod +x】
排查noexec挂载限制
如果脚本放在U盘、移动硬盘或Windows双系统NTFS分区上,即使已设+x,运行仍报“权限不足”,大概率是文件系统被noexec挂载所致。
第一步:查挂载选项:mount | grep noexec
第二步:找到对应挂载点(如/mnt/usb0),执行临时修复:sudo mount -o remount,exec /mnt/usb0
第三步:再次chmod +x your_script.sh → ./your_script.sh
第四步:如需永久生效,编辑/etc/fstab,在对应分区行末尾添加exec(例如:defaults,exec)











