关于系统权限的基本知识

45 阅读2分钟

macos 与所有基于 Linux 的系统一样,具有一组强大的安全功能。其中一项基本功能是对文件和文件夹的权限。这些权限允许保护文件和文件夹免受未经授权的访问。本文对这些权限进行了一些解释,并向您展示了如何使用它们共享对文件夹的访问权限。

权限基础

macos 本质上是一个多用户操作系统。它也有组,用户可以是组的成员。但是想象一下没有权限概念的多用户系统。不同的登录用户可以随意阅读彼此的内容。正如您可以想象的那样,这对隐私或安全来说不是很好。macos 上的任何文件或文件夹都分配了三组权限。第一组用于拥有文件或文件夹的用户。第二个是针对拥有它的组。第三组适用于不是拥有该文件的用户或拥有该文件的组中的其他所有人。

权限含义

每组权限都分为三种类型——读取、写入和执行。其中每一个都有一个代表许可的首字母,即 r、w 和 x。

文件权限

对于文件,以下是这些权限的含义:

  • read(r):可以读取文件内容
  • write(w):可以改变文件内容
  • execute(x):文件可以被执行——这主要用于直接运行的程序或脚本

当您列出任何文件的长列表时,您可以看到这三组权限。使用系统上的 /etc/services 文件试试这个:

$ ls -l /etc/services
-rw-r--r--. 1 root root 692241 Apr  9 03:47 /etc/services

请注意列表左侧的权限组。如上所述,它们分三组提供——针对拥有该文件的用户、针对拥有该文件的组以及针对其他所有人。用户所有者是 root,组所有者是 root组织。用户所有者对该文件具有读写权限。root 组中的任何人都只能读取该文件。最后,其他任何人也只能读取该文件。(最左边的破折号表明这是一个普通文件。)

文件夹权限

对于文件夹,权限的含义略有不同:

  • read(r):可以读取文件夹内容(如ls命令)
  • write(w):可更改文件夹内容(可在此文件夹内创建或删除文件)
  • execute(x):可以搜索文件夹,但无法读取其内容。

(这听起来可能很奇怪,但解释需要更复杂的文件系统细节,这超出了本文的范围。所以现在就用它吧。)看一下 /etc/grub.d 文件夹,例如:

$ ls -ld /etc/grub.d
drwx------. 2 root root 4096 May 23 16:28 /etc/grub.d

注意最左边的 d。它显示这是一个目录或文件夹。权限显示用户所有者 (root) 可以读取、更改和 cd 进入此文件夹。但是,没有其他人可以这样做——无论他们是否是根组的成员。请注意,您也无法 cd 进入该文件夹:

$ cd /etc/grub.d
bash: cd: /etc/grub.d: Permission denied

查看你自己的主目录是如何设置的:

$ ls -ld $HOME
drwx------. 221 paul paul 28672 Jul  3 14:03 /home/paul

现在,请注意除了您作为所有者之外,没有人可以访问此文件夹中的任何内容。这是故意的!您不希望其他人能够在共享系统上阅读您的私人内容。

制作共享文件夹

您可以利用此权限功能轻松创建文件夹以在组内共享。 假设您有一个名为 finance 的组,其中有几个成员需要共享文档。因为这些是用户文档,所以最好将它们存储在 /home 文件夹层次结构中。 首先,使用 sudo 创建一个共享文件夹,并将其设置为finance所有:

$ sudo mkdir -p /home/shared/finance
$ sudo chgrp finance /home/shared/finance

默认情况下,新文件夹具有这些权限。 注意它是如何被任何人阅读或搜索的,即使他们不能在其中创建或删除文件:

drwxr-xr-x. 2 root finance 4096 Jul  6 15:35 finance

对于财务数据来说,这似乎不是一个好主意。 接下来,使用 chmod 命令更改共享文件夹的模式(权限),请注意使用 g 更改所属组的权限,使用 o 更改其他用户的权限。 同样,您将更改用户所有者的权限:

$ sudo chmod g+w,o-rx /home/shared/finance

生成的权限看起来更好。现在,finance 组(或用户所有者 root)中的任何人都可以完全访问该文件夹及其内容:

drwxrwx---. 2 root finance 4096 Jul  6 15:35 finance

如果任何其他用户尝试访问共享文件夹,他们将无法访问。现在我们的财务组可以将文件放在一个共享的地方。

好了,关于权限的基本知识就介绍到这里啦

参考:fedoramagazine.org/command-lin…