我有两个 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
)并且对文件/脚本有读取权限,你打算去执行,那么你应该会很好。