Linux 文件权限如何工作?

已发表: 2022-01-29

如果您已经使用 Linux 一段时间(甚至是 OS X),您可能会遇到“权限”错误。 但它们到底是什么,为什么它们是必要的或有用的? 让我们来看看内部。

用户权限

在过去,计算机是非常昂贵的大型机器。 为了充分利用它们,连接了多个计算机终端,使许多用户可以同时开展业务。 数据处理和存储在机器上完成,而终端本身只不过是查看和输入数据的一种手段。 如果你仔细想想,这几乎就是我们在“云”上访问数据的方式; 看看亚马逊的云 MP3 系统、Gmail 和 Dropbox,您会注意到虽然可以在本地进行更改,但所有内容都是远程存储的。

(图片:Zenith Z-19 “哑”终端;图片来源:ajmexico)

为此,个人用户需要拥有帐户。 他们需要有一部分存储区域分配给他们,并且需要允许他们运行命令和程序。 每个人都获得了特定的“用户权限”,这决定了他们可以做什么和不能做什么,他们在系统上可以访问和不可以访问的位置,以及他们可以修改和不能修改哪些文件。 每个用户也被分配到不同的组中,这些组授予或限制进一步的访问权限。

文件访问

error reading

在这个古怪的多用户世界中,我们已经设置了用户可以做什么的界限。 但是他们访问的内容呢? 好吧,每个文件都有一组权限和一个所有者。 所有者指定,通常在创建文件时绑定,声明它属于哪个用户,并且只有该用户可以更改其访问权限。

在 Linux 世界中,权限分为三类:读、写和执行。 “读”访问允许查看文件内容,“写”访问允许修改文件内容,“执行”允许运行一组指令,如脚本或程序。 这些类别中的每一个都应用于不同的类别:用户、组和世界。 “用户”表示所有者,“组”表示与所有者在同一组中的任何用户,“世界”表示任何人和每个人。

no write perm

广告

也可以使用这些权限限制文件夹。 例如,您可以允许组中的其他人查看您的主文件夹中的目录和文件,但不允许组外的任何人查看。 您可能希望将“写入”权限限制为只有您自己,除非您正在处理某种共享项目。 您还可以创建一个共享目录,允许任何人查看和修改该文件夹中的文件。

在 Ubuntu 中更改权限

图形用户界面

要更改您在 Ubuntu 中拥有的文件的权限,只需右键单击该文件并转到“属性”。

ubuntu permissions

您可以更改所有者、组或其他人是否可以读写、只读或不执行任何操作。 您还可以选中一个框以允许执行文件,这将为所有者、组和其他人同时启用它。

命令行

您也可以通过命令行执行此操作。 转到其中包含文件的目录并键入以下命令以查看列表中的所有文件:

ls -al

在每个文件和目录旁边,您会看到一个特殊部分,其中概述了它所拥有的权限。 它看起来像这样:

-rwxrw-r–

r代表“读取”, w代表“写入”, x代表“执行”。 目录将以“d”而不是“-”开头。 您还会注意到有 10 个空格具有价值。 第一组可以忽略,然后有3组3组。第一组是给主人的,第二组是给组的,最后一组是给世界的。

广告

要更改文件或目录的权限,让我们看一下 chmod 命令的基本形式。

chmod [class][operator][permission] 文件

chmod [ugoa][+ or –] [rwx] 文件

起初这可能看起来很复杂,但相信我,这很容易。 首先,让我们看一下类:

  • u:这是给主人的。
  • g:这是给小组的。
  • o:这是给所有其他人的。
  • 答:这将更改上述所有内容的权限。

接下来是运营商:

  • +:加号将添加后面的权限。
  • -:减号将删除后面的权限。

还在我这儿? 最后一部分与我们检查文件权限时相同:

  • r:允许读访问。
  • w:允许写访问。
  • x:允许执行。

现在,让我们把它放在一起。 假设我们有一个名为“todo.txt”的文件,它具有以下权限:

-rw-rw-r–

即所有者和组可以读写,而世界只能读取。 我们想将权限更改为:

-rwxr——

即所有者拥有完全权限,群组可以读取。 我们可以通过 3 个步骤来完成。 首先,我们将为用户添加执行权限。

chmod u+x todo.txt

然后,我们将删除该组的写入权限。

chmod gw todo.txt

广告

最后,我们将删除所有其他用户的读取权限。

chmod 或 todo.txt

我们也可以将它们组合成一个命令,如下所示:

chmod u+x,gw,或 todo.txt

您可以看到每个部分都用逗号分隔,并且没有空格。

以下是一些有用的权限:

  • -rwxr-xr-x : Owner 拥有完全权限,group 和其他用户可以读取文件内容并执行。
  • -rwxr–r– :所有者拥有完全权限,组和其他用户只能读取文件(如果您不介意其他人查看您的文件,则很有用。
  • -rwx—— : Owner 有完全权限,其他人没有(对个人脚本有用)。
  • -rw-rw----:所有者和组可以读写(用于与组成员协作)。
  • -rw-r–r– :所有者可以读写,组和其他用户只能读取文件(用于在共享网络上存储个人文件)。
  • -rw——- :所有者可以读写,其他人没有(用于存储个人文件)。

您还可以使用 chmod 做一些其他的事情——比如 setuid 和 setgid——但是它们有点深入,而且大多数用户实际上并不需要使用它们。

根或超级用户和系统文件

如今,我们并不总是运行具有多个用户的系统。 为什么我们还要担心权限?

好吧,Unix 及其衍生产品——Linux、OS X 等——也区分了用户运行的东西、管理员运行的或具有管理员权限的东西以及系统本身运行的东西。 因此,系统不可或缺的东西需要管理员权限才能更改或访问。 这样,您就不会意外地搞砸任何事情。

广告

在 Ubuntu 中,要更改系统文件,您可以使用“sudo”或“gksudo”来获得等效的管理员权限。 在其他发行版中,您切换到“root”或“超级用户”,在您注销之前有效地执行相同的操作。

请注意,在这两种情况下,更改文件权限可能会导致程序无法运行,无意中将文件所有权更改为 root 用户(而不是所有者),并降低系统安全性(通过授予更多权限)。 因此,建议您不要更改文件(尤其是系统文件)的权限,除非有必要或您知道自己在做什么。


文件权限已到位,以在用户之间提供基本的安全系统。 了解它们的工作原理可以帮助您在多用户环境中设置基本共享,保护“公共”文件,并在系统文件所有权出现问题时为您提供线索。

认为你可以更容易地解释事情吗? 有更正吗? 想追忆往昔? 休息一下,把你的想法写在评论里。