所以我有一点Linux问题,geez会教我在Windows上度过这么多年。无论如何,我做了一个小的Java应用程序,很好地包装了Java Service Wrapper脚本,但当我运行该脚本时:
sh ./wrapper.sh console
我立即得到了许可。许可被拒绝的消息是这样的:
eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied
我的小wrapper.sh位于MyApp / bin文件夹中。 目录MyApp / bin / wrapper包含2个文件:
作为测试,我运行了以下chmod命令:
chmod a=rwx MyApp -R
我验证了所有内容都是rwx,即使在子文件夹中并尝试再次运行脚本,结果完全相同......权限被拒绝。
任何人都知道我可以尝试下一步让宝宝跑步吗?
谢谢, 兰斯洛特
答案 0 :(得分:8)
我刚注意到错误消息引用了托管文件的目录的名称:
eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied
我们知道这是一个目录,因为你提到“目录MyApp / bin / wrapper包含2个文件”。
您是否可以检查脚本,例如您将目录名称用作命令?比如使用包装器(这是目录名)而不是包装器/ wrapper-linux-x86-32(可能是文件名),还是类似的错误?
在文件名中使用空格并忘记引用所述文件名时经常会出现类似的错误(尽管可能不是这里的情况。)
如果不这样,你能否编辑你的问题以包含你正在调用的包装脚本的内容?
(新答案,因为它与之前的noexec想法完全无关,而且可以留待参考。)
答案 1 :(得分:7)
托管脚本的文件系统可能会使用noexec
标志进行挂载。检查该文件系统的/ etc / fstab条目,如果有noexec
,请尝试删除它,然后通过mount /path/to/mountpoint -o remount
重新安装该文件系统
第二个想法,检查no mount
命令的输出是否为noexec实例而不是/ etc / fstab(文件系统可能是动态挂载的。)
答案 2 :(得分:0)
您可能还必须将执行脚本授予您的包装器
chmod + x wrapper.sh
编辑:我刚刚发现你的wrapper.sh位于你的MyApp文件夹中 / EDIT
另外,如果你确定你有
#!/bin/sh
在.sh文件的顶部,您可以像这样执行:
.wrapper.sh
答案 3 :(得分:0)
首先,尝试在文本编辑器中打开它,以确保您具有读取权限。如果是这样,那么
chmod +x wrapper.sh
并确保脚本开头有#!/bin/sh
答案 4 :(得分:0)
您可以尝试执行其他用户主目录中的文件,您可以向用户“user”授予权限
chmod -R a + x / home / user1 要么 chmod -R o + x / home / user1 chmod -R g + x / home / user1
答案 5 :(得分:0)