所有用户的执行权限未按预期工作

所有用户的执行权限未按预期工作

我有两个 bash 脚本,/usr/local/bin权限如下:

-rwxrwx--x 1 root root 33 Dec 30 12:18 hello.sh
-rw-r--r-- 1 root root 34 Dec 30 12:28 test.sh

两个脚本都有相同的内容:

#!/bin/bash

echo "Hello $USER!"

我目前是一个没有root权限的用户。

我期望以下内容:

  • 我无法读取你好.sh,但我可以通过执行bash hello.sh
  • 我会读测试文件.但我无法通过执行它bash test.sh

读取两个文件的工作都符合预期,但执行两个文件的工作却与我的预期相反:

  • 我无法执行你好.sh(尽管我为所有用户设置了执行权限)
  • 我可以执行测试文件(即使我只为所有用户设置了读取权限)。

我这里漏掉了一些东西。我漏掉了什么基本概念?

答案1

我偶然发现了这篇文章:https://unix.stackexchange.com/questions/34202/can-a-script-be-executable-but-not-readable

最终,看起来bash(解释器)才是真正被执行的。解释器需要对文件/脚本的读取权限才能执行文件/脚本。

因此答案是:只要你对你的解释器有执行权限(在本例中bash)并且对文件/脚本有读取权限,你打算去执行,那么你应该会很好。

相关内容