无论是普通用户还是root用户,在银河麒麟桌面版操作系统下运行二进制可执行文件或者.sh文件等,都提示bash无法执行:权限不够,咨询官方客服和网上的结果,总结得到以下几点:
1.麒麟系统kysec的问题
打开左下角【开始】-【控制面板】-【安全中心】-【应用执行控制】,把里面的设置改为关闭:关闭检查程序完整性的安全功能
通过命令行可以查看当前kysec的相关安全状态
getstatus
- 第一行Kysec status表示当前Kysec状态;
- 第二行exec control表示当前执行控制功能状态为警告;
- 第三行net control表示当前网络控制功能状态为警告;
- 第四行file protect表示当前文件保护功能为开;
- 第五行kmod protect表示当前内核模块保护状态为开;
- 第六行three protect表示当前三权分立状态为关;
- 第七行process protect表示当前进程保护功能为开。
如果Kysec status 为disable,代表已关闭kysec,如果还是不能执行,那么可能是其他原因。
调整kysec设置
# 设置Kysec安全状态为软/强制模式;
sudo setstatus softmode/normal
# 关闭执行控制功能状态:
sudo setstatus -f exectl off
# 开启执行控制功能状态:
sudo setstatus -f exectl on
# 关闭内核模块保护功能
sudo setstatus -f kmod off
# 关闭文件保护功能
sudo setstatus -f fpro off
2./data文件夹权限问题
如果是/data文件夹,那么有可能是文件夹权限问题,命令行执行以下命令
bash
mount | grep /data
查看是否有noexec,如果有,那么是该文件夹问题,打开
bash
vi /etc/fstab
确保 /etc/fstab
中没有拼写错误或无效的挂载选项,并且 exec
选项正确配置。例如原来是
bash
/data ext4 rw,user,nosuid,nofail 0 2
增加 exec权限,修改为
bash
/data ext4 rw,user,nosuid,nofail,exec 0 2
重新挂载data
bash
sudo mount -o remount,exec /data
再次mount | grep /data查看文件夹权限