“执行”权限有什么作用?


29

令我感到震惊的是,我仍然不了解Linux中的“执行”权限。

有三种权限-读取,写入和执行。我了解字面意义上的读写,但是执行究竟能做什么呢?

假设我拥有example.php执行许可。我该怎么办example.php

Answers:


30

基本上,这意味着您可以告诉操作系统运行文件中的代码。例如,如果文件是二进制可执行文件,则写访问权将允许您修改它,读访问权将允许您查看它,但没有执行权限,您将无法运行该程序。就脚本而言,其复杂程度更高,因为您不必“运行”程序,您只需将其内容读入解释器即可,该解释器本身具有执行特权,但您无需执行脚本本身的权限。

Linux中的某些脚本本身是可执行的,您经常会在顶部看到一行,例如

#!/ bin / bash或

#!/ bin / python

那行告诉内核可以通过调用相关程序来执行文件(而不仅仅是文本)。然后,您可以像

。/脚本

不必做

python ./脚本


这对于非基于文本的文件类型意味着什么?.png还是.avi
iono

1
基本上相同,文件扩展名无关紧要。如果文件#!/bin/bash开头.avi,它将作为bash执行。如果它是真正的avi格式,则可能无法运行它,因为将其解释为命令将毫无意义且会失败。
米菲特

#!真正的内核解释?
masterxilo

17

“执行”允许用户执行可执行文件。对于目录,可以使用cd命令进入目录。


1
对目录部分的访问是巨大的。您永远不会仅仅从模式本身的名称就猜到这一点。
BugWhisperer

2

出于实际目的,阅读许可意味着执行能力。

然而,相反的事实是不正确的。授予执行代码许可而不授予读取代码的能力具有一定的价值。


这实际上很有意义。
masterxilo

我对READ / EXECUTE感到困惑,并期望得到这样的答案。谢谢
T.Todua

2

它用于从GUI或命令行运行应用程序。对于“普通”的php使用(通过网络服务器),它不会改变任何东西。确切地说,这取决于配置,但在大多数情况下,您不需要+ x权限即可允许通过浏览器加载php网页。

要从命令行运行,您需要:

  • #!/usr/bin/php在脚本开头添加
  • 添加+ x权限
  • 您的脚本必须在可执行搜索路径($ PATH环境变量)中,或者必须在脚本名称之前指定其所在的目录。这可以是绝对路径名(如/etc/xdg/foo或)/home/fred/bar,也可以是相对目录(如dir1/prog1或)./prog2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.