有人在 Ask Ubuntu 上问了一个问题,关于为什么他们permission denied
在进入 Bash shell 时会得到
/etc/profile
我知道这是因为该文件没有执行权限。甚至 root 也无法执行它(sudo /path/to/file/with/no/execute/bits
失败并出现无意义的错误sudo /path/to...: command not found
)。我也知道root可以进入没有执行位的目录,所以绝对禁止执行不可执行的文件似乎很特别。在聊天中,Eliah Kagan 认为 root 无法执行不可执行文件的原因是为了保护 root(可能是为了防止意外执行危险代码)。
我简要地想知道为什么有人想要执行/etc/profile
并认为如果有人确实想要执行它,他们可能真的想要source
它(因为它是一个设置环境和 shell 变量的配置文件)。source
然后我意识到任何常规文件都不需要执行权限。但是source
在当前shell中执行文件!该文件可以包含任何命令,. file
并将继续执行它。
如果限制执行权限以防止意外执行有潜在危险的代码,为什么可以使用source
命令执行不可执行的文件?