我在vmware上安装了银河麒麟社区服务版(Kylin-4.0.2-server-sp1-Community-20170412-x86_64.iso),发现执行shell脚本时,都会报权限不足的错误,必须在可执行文件前添加sh 才行。 例如我写了个test.sh用于查看maven的版本号,test.sh的内容为 echo mvn -v,用root用户编写后执行chmod a+x test.sh赋权,在PATH中添加当前路径 export PATH=.:$PATH,生效后执行./test.sh报错,执行sh ./test.sh后,test.sh可执行,但里面的mvn -v命令报错,报错皆为:permission denied。见图:
一直不知为何如此。
不止shell,同样的curl、perl、python脚本也如此,包括c文件通过gcc编译出来的可执行文件也无法执行,皆报相同的错误。
请各位解惑,谢谢。
问题已解决。
原因如下:
我在安装时计划将所有文件存放在单独分区,所以划分了个基本分区/dev/sda3挂载到/data上,银河麒麟系统默认的文件系统选项为:rw,user,x-gvfs-show,nosuid,nofail,将/etc/fstab中/data的选项user选项去除即可。
为什么去掉user即可,因为这个选项自动包含了noexec选项,noexec选项表示此文件系统上不允许执行二进制。网上搜到的ubuntu有关/etc/fstab中options的解释如下:
user - Permit any user to mount the filesystem. This automatically implies noexec, nosuid,nodev unless overridden.
exec / noexec - Permit/Prevent the execution of binaries from the filesystem.
这个纠结了我几天的问题已解决,但不知银河麒麟系统为啥默认要给所有用户添加mount权限啊,应该只留root的mount权限才对,实际上,很多企业应用场景应该是会划分独立的数据分区的,那会不会导致所有的数据分区都有这类问题呢。
楼主,我也遇到了这个问题。但是我看了我的fstab,fstab是正常的。但是仍然会报 permission denied 的问题。而且,除了系统自带的命令,其他的都会报这个错误。
我这边的麒麟系统也遇到了同样的问题,查看了层主说的这个文件,没有这个配置,问题还没有解决,Help。