怎样在 Linux 终端中使文件可执行?

POSIX 兼容文件系统(Ext4、Btrfs、XFS、JFS 等)中的每个文件都有分配给自身的“模式位”。

要使文件在 Linux 中可执行,需要启用可执行模式位。

要设置可执行模式位,使用 chmod 命令如下:

chmod u+x <file>

这样,您可以从终端执行所述文件:

./file

这就是快速总结。 让我们稍微详细地看一下。

在 Linux 中使文件可执行

有几种方法可以使文件在 Linux 中可执行。 最常见的方法包括使用 chmod 命令,以不同的方式。

要检查是否可以执行文件,请使用 -l 标志与 ls 命令。

$ ls -l lhb.txt
-rw-r--r--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

在第一列中, -rw-r--r-- 表示所有者可以读写,组中的用户只能读取,其他人只能读取文件。

注意缺少 x 从权限符号。 这意味着 lhb.txt 不可执行。

我强烈建议阅读有关 Linux 文件权限的内容并复习基础知识以更好地理解这些命令。

方法一:让文件对所有人都可执行

第一种方法,也是最直接的方法,是使用以下命令使文件可执行:

chmod +x <file>

x flag 是设置或取消设置文件的可执行权限。 并使用 + 先签到 x 表示我们要将其设置为可执行文件。

这将使文件对所有者、组和其他所有人都可执行。 系统上的任何人都可以执行它。

$ ls -l lhb.txt
-rw-r--r--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

$ chmod +x lhb.txt

$ ls -l lhb.txt
-rwxr-xr-x  1 pratham  staff  0 Mar 10 20:49 lhb.txt

正如您现在所看到的,每个人、所有者、组和其他人都有可执行文件 x 位设置。 这意味着每个人现在都可以执行这个文件。

方法 2:使文件仅对特定用户或组可执行

如果您不想让每个人都能够执行文件,则应在添加/删除文件权限之前指定类。

可用的类是:

  • u :所有者/用户的权限
  • g : 组权限
  • o : 其他人的权限
  • a : 每个人的权限

当您指定一个类时,语法与您在第一个方法中看到的大部分相似。

chmod <class>+x <file>

这意味着,如果我想以一种只有文件所有者可以执行它的方式使文件可执行,而没有其他人可以执行,那么我应该使用以下命令:

chmod u+x <file>

这是一个 example:

$ ls -l lhb.txt
-rw-r--r--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

$ chmod u+x lhb.txt

$ ls -l lhb.txt
-rwxr--r--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

同样,要使其对拥有该文件的组中的每个人都可执行,我应该使用以下命令:

chmod g+x <file>

这是一个 example:

$ ls -l lhb.txt
-rw-r--r--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

$ chmod g+x lhb.txt
$ ls -l lhb.txt
-rw-r-xr--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

当您指定 a 类,就好像你没有指定任何。 我们来看一下。

$ ls -l lhb.txt
-rw-r--r--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

$ chmod +x lhb.txt

$ ls -l lhb.txt
-rwxr-xr-x  1 pratham  staff  0 Mar 10 20:49 lhb.txt

$ chmod 644 lhb.txt #reset permissions

$ chmod a+x lhb.txt

$ ls -l lhb.txt
-rwxr-xr-x  1 pratham  staff  0 Mar 10 20:49 lhb.txt

这些命令可能看起来不同,但它们具有相同的结果。

方法 3:使用八进制数

如果您遵循第一种方法,则只需执行以下操作即可启用文件的可执行标志 +x,使任何人都可以执行它。

但是,有时您可能不希望每个人都执行一个文件,也许它应该需要一些权限。 在这种情况下,您可以指定完整的权限集。

这通常通过提供八进制值或符号值来启用文件权限来完成。

这使您可以更精细地控制标志的设置方式。 下面是使用八进制值的语法 chmod 命令:

chmod <octal> <file>

如果您不擅长数字,可以使用在线 chmod 计算器,它可以帮助您生成正确的八进制值,从而避免使用错误的值和弄乱文件权限。

说,我想让文件只对所有者和组可执行,我需要先知道它当前的权限,然后使用它在它上面添加可执行位 [chmod-calculator].

让我们看看怎样做到这一点。

$ ls -l lhb.txt
-rw-r--r--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

$ chmod 754 lhb.txt

$ ls -l lhb.txt
-rwxr-xr--  1 pratham  staff  0 Mar 10 20:49 lhb.txt

如您所见,只有所有者和组才能执行该文件。

结论

本文介绍了怎样在 Linux 系统中创建可执行文件。 它主要侧重于不同的使用方式 chmod 命令。 如果您想了解更多信息,我们有一些关于怎样使用的示例 chmod 命令。