获取有关“拒绝许可”的更多信息

时间:2015-09-05 18:30:27

标签: bash permissions

我在脚本上收到'权限被拒绝'错误。我已经检查了所有常见的嫌疑人:

  • 我拥有文件和文件夹
  • 两者都拥有x权限
  • 实际上两者都是rwx给所有者,这是我正在使用的用户。

脚本shebang行是#!/bin/sh我可以执行得很好。但这是无关紧要的,因为它甚至从未被解析过。在我当前的bash会话中设置-x除了尝试执行脚本之外不会显示任何其他事情。

我得到的错误是:

$ path/script
bash: path/script: Permission denied
$ _

编辑:如果我将脚本作为参数传递,它可以正常工作

$ /bin/sh -x path/script
...script executes...

1 个答案:

答案 0 :(得分:1)

通过深入了解内核调用获取更多信息。如果您了解C和内核API,它会有所帮助。 man页面是您的朋友。

看看您是否有一个名为strace的程序,请尝试which strace。各种UNIX上都有类似的程序(如某些太阳上的truss,OS X上的dtruss),但strace是最常见的。如果你找不到一个,谷歌就会像......一样,无论你使用什么UNIX。

strace -o strace.out -f /bin/sh path/script

-o strace.out表示跟踪文件strace.out - 使用编辑器查看

-f表示遵循子流程。

/bin/sh path/script是您要跟踪的程序。

您将获得大量输出,有时值得走到尽头并向后工作。

在Linux上还有ltrace,它也可以跟踪库调用。

如果您要跟踪的程序已在运行,那么-p选项,后跟该进程的pid可以非常方便。

当然,在这种情况下完全可以说shell完全可以报告内核告诉它的所有内容。可能没有进一步的信息。