Linux 中的权限(chown、chmod、SUID、GUID、粘滞位、ACL、umask)

大家好。 这是《RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 和 EX300》一书中文章的翻译。

来自我自己: 我希望这篇文章不仅对初学者有用,而且还能帮助更有经验的管理员组织他们的知识。

所以,我们走吧。

Linux 中的权限(chown、chmod、SUID、GUID、粘滞位、ACL、umask)

要访问 Linux 中的文件,需要使用权限。 这些权限分配给三个对象:文件所有者、组所有者和另一个对象(即其他人)。 本文将教您如何申请权限。

本文首先概述基本概念,然后讨论特殊权限和访问控制列表 (ACL)。 本文最后介绍了通过 umask 设置默认权限以及管理扩展用户属性。

文件所有权管理

在讨论权限之前,您应该了解文件和目录所有者的角色。 文件和目录的所有权对于使用权限至关重要。 在本节中,您将首先了解如何查看所有者。 然后您将了解如何更改文件和目录的组所有者和用户。

显示文件或目录的所有者

在 Linux 中,每个文件和每个目录都有两个所有者:用户和组所有者。

这些所有者是在创建文件或目录时设置的。 创建该文件的用户成为该文件的所有者,同一用户所属的主要组也成为该文件的所有者。 为了确定您作为用户是否具有文件或目录的访问权限,shell 会检查所有权。

这按以下顺序发生:

  1. shell 会检查您是否是要访问的文件的所有者。 如果您是该所有者,您将被授予权限并且 shell 会停止检查。
  2. 如果您不是文件的所有者,shell 将检查您是否是对该文件具有权限的组的成员。 如果您是该组的成员,您将使用为该组设置的权限访问该文件,并且 shell 将停止检查。
  3. 如果您既不是用户也不是组所有者,您将获得其他用户权限。

要查看当前所有者分配,您可以使用以下命令 ls -l。 此命令显示组的用户和所有者。 下面您可以看到 /home 目录下目录的所有者设置。

[root@server1 home]# ls -l
total 8
drwx------. 3  bob            bob            74     Feb   6   10:13 bob
drwx------. 3  caroline       caroline       74     Feb   6   10:13 caroline
drwx------. 3  fozia          fozia          74     Feb   6   10:13 fozia
drwx------. 3  lara           lara           74     Feb   6   10:13 lara
drwx------. 5  lisa           lisa           4096   Feb   6   10:12 lisa
drwx------. 14 user           user           4096   Feb   5   10:35 user

使用命令 ls 您可以显示给定目录中文件的所有者。 有时,获取系统上以给定用户或组为所有者的所有文件的列表可能很有用。 为此,您可以使用 发现。 争论 查找用户 可以用于此目的。 例如,以下命令显示所有者为 linda 的所有文件:

find / -user linda

你也可以使用 发现 搜索具有特定组作为其所有者的文件。

例如,以下命令搜索属于某个组的所有文件 用户:

find / -group users

业主变更

要应用适当的权限,首先要考虑的是所有权。 有一个命令可以做到这一点 乔恩。 该命令的语法很容易理解:

chown кто что

例如,以下命令将 /home/account 目录的所有者更改为用户 linda:

chown linda /home/account

团队 乔恩 有几个选项,其中之一特别有用: -R。 您可以猜测它的作用,因为此选项也可用于许多其他命令。 这允许您递归地设置所有者,从而允许您设置当前目录及其下面所有内容的所有者。 以下命令将 /home 目录及其下所有内容的所有者更改为用户 linda:

现在业主看起来像这样:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 account account 62 Sep 25 21:41 account
drwx------. 2 lisa    lisa    62 Sep 25 21:42 lisa

让我们做:

[root@localhost ~]# chown -R lisa /home/account
[root@localhost ~]#

现在用户 lisa 是帐户目录的所有者:

[root@localhost ~]# ls -l /home
total 0
drwx------. 2 lisa account 62 Sep 25 21:41 account
drwx------. 2 lisa lisa    62 Sep 25 21:42 lisa

更改群组所有者

有两种方法可以更改组所有权。 您可以使用以下方法执行此操作 乔恩,但是有一个特殊的命令叫做 chgrp,它完成这项工作。 如果你想使用命令 乔恩, 用 . или : 组名之前。

以下命令将 /home/account 组的任何所有者更改为该帐户组:

chown .account /home/account

您可以使用 乔恩 以多种方式更改用户和/或组的所有者。 这里有些例子:

  • chown 丽莎 myfile1 将用户 lisa 设置为文件 myfile1 的所有者。
  • chown lisa.sales myfile 将用户 lisa 设置为文件 myfile 的所有者,并将 sales 组设置为同一文件的所有者。
  • chown 丽莎:销售我的文件 和之前的队伍一样。
  • chown .sales myfile 将销售组设置为 myfile 的所有者,而不更改用户的所有者。
  • chown :销售我的文件 和之前的队伍一样。

你可以使用命令 chgrp更改群组所有者。 考虑以下示例,您可以在其中使用 chgrp 将帐户目录的所有者设置为 sales 组:

chgrp .sales /home/account

就像在案件中一样 乔恩,您可以使用该选项 -R с chgrp,并且还递归地更改组的所有者。

默认所有者理解

您可能已经注意到,当用户创建文件时,将应用默认所有权。
创建文件的用户自动成为该文件的所有者,并且该用户的主要组自动成为该文件的所有者。 通常,这是在 /etc/passwd 文件中作为用户的主要组列出的组。 但是,如果用户是多个组的成员,他们可以更改有效的主要组。

要显示当前有效的主要组,用户可以使用命令 团体:

[root@server1 ~]# groups lisa
lisa : lisa account sales

如果当前用户linda想要更改有效的主要组,他将使用命令 新组接下来是他想要设置为新的有效主要组的组的名称。 使用命令后 新组 主组将处于活动状态,直到用户输入命令 出口 或不会退出系统。

以下是用户 linda 使用此命令的方式,其中主要组是 sales:

lisa@server1 ~]$ groups
lisa account sales
[lisa@server1 ~]$ newgrp sales
[lisa@server1 ~]$ groups
sales lisa account
[lisa@server1 ~]$ touch file1
[lisa@server1 ~]$ ls -l
total 0
-rw-r--r--. 1 lisa sales 0 Feb 6 10:06 file1

更改当前主要组后,用户创建的所有新文件都将以该组为组所有者。要恢复到原始主要组设置,请使用 出口.

为了能够使用命令 新组,用户必须是他想要用作主要组的成员。 此外,可以使用以下命令为组使用组密码 密码。 如果用户使用命令 新组但不是目标组的成员,shell 会提示输入组密码。 输入正确的组密码后,将设置一个新的有效主组。

基本权限管理

Linux 权限系统发明于 1970 世纪 XNUMX 年代。 由于当年计算需求有限,基础权限系统相当有限。 该权限系统使用可应用于文件和目录的三种权限。 在本节中,您将了解如何使用和更改这些权限。

了解读、写和执行权限

三个主要权限允许您读取、写入和执行文件。 当这些权限应用于文件或目录时,其效果会有所不同。 当应用于文件时,读取权限使您有权打开该文件进行读取。 因此,您可以读取其内容,但这意味着您的计算机可以打开该文件以对其执行某些操作。

例如,需要访问库的程序文件必须具有对该库的读取访问权限。 这意味着读取权限是处理文件所需的最基本权限。

当应用于目录时,读取允许您显示该目录的内容。 您应该注意,此权限不允许您读取目录中的文件。 Linux 权限系统不知道继承,读取文件的唯一方法是使用该文件的读取权限。

您可能会猜到,写入权限在应用于文件时允许写入该文件。 换句话说,它允许您更改现有文件的内容。 但是,它不允许您创建或删除新文件或更改文件权限。 为此,您需要向要在其中创建文件的目录授予写入权限。 在目录中,此权限还允许您创建和删除新的子目录。

执行权限是执行该文件所需的权限。 它永远不会被默认安装,这使得 Linux 几乎完全不受病毒的影响。 只有对该目录具有写访问权限的人才能应用执行权限。

下面总结一下基本权限的使用:

Linux 中的权限(chown、chmod、SUID、GUID、粘滞位、ACL、umask)

使用 chmod

要管理权限,请使用命令 CHMOD... 使用 CHMOD 您可以设置用户、组和其他的权限。 您可以在两种模式下使用此命令:相对模式和绝对模式。 在绝对模式下,使用三位数字来设置基本权限。

Linux 中的权限(chown、chmod、SUID、GUID、粘滞位、ACL、umask)

设置权限时,计算您需要的值。 如果你想在 /somefile 中设置用户的读、写和执行、组的读和执行以及其他人的读和执行,那么你可以使用以下命令 CHMOD:

chmod 755 /somefile

当你使用 CHMOD 这样,当前的所有权限都将替换为您设置的权限。

如果要更改相对于当前权限的权限,可以使用 CHMOD 在相对模式下。 使用 CHMOD 在相对模式下,您可以使用三个指示器来指示您想要执行的操作:

  1. 首先,您指定要更改权限的对象。 为此,您可以选择用户 (u), 团体 (g) 和别的 (o).
  2. 然后,您可以使用该语句在当前模式中添加或删除权限,或绝对设置它们。
  3. 最后你使用 r, w и x来指定您要设置的权限。

在相对模式下更改权限时,您可以跳过“to”部分来添加或删除所有对象的权限。 例如,此命令为所有用户添加执行权限:

chmod +x somefile

在相对模式下工作时,您还可以使用更复杂的命令。 例如,此命令向一个组添加写入权限并删除其他组的读取权限:

chmod g+w,o-r somefile

当使用 chmod -R o+rx /数据 您为所有目录以及 /data 目录中的文件设置执行权限。 要仅设置目录而不是文件的执行权限,请使用 chmod -R o+ rX /数据.

大写的 X 确保文件不会被授予执行权限,除非该文件已经对某些对象设置了执行权限。 这使得 X 成为处理执行权限的更智能的方式; 这将避免在不需要的文件上设置此权限。

扩展权利

除了您刚刚读到的基本权限之外,Linux 还具有一组高级权限。 这些不是您默认设置的权限,但有时它们提供了有用的补充。 在本节中,您将了解它们是什么以及如何设置它们。

了解 SUID、GUID 和粘性位扩展权限

共有三个高级分辨率。 第一个是设置用户 ID (SUID) 权限。 在某些特殊情况下,您可能希望将此权限应用于可执行文件。 默认情况下,运行可执行文件的用户使用自己的权限运行该文件。

对于普通用户来说,这通常意味着该程序的使用受到限制。 但是,在某些情况下,用户仅需要特殊权限才能执行特定任务。

例如,考虑用户需要更改密码的情况。 为此,用户必须将新密码写入 /etc/shadow 文件。 但是,非 root 用户无法写入该文件:

root@hnl ~]# ls -l /etc/shadow
----------. 1 root root 1184 Apr 30 16:54 /etc/shadow

SUID权限为这个问题提供了一个解决方案。 在 /usr/bin/passwd 实用程序中,默认情况下应用此权限。 这意味着当更改密码时,用户会暂时获得 root 权限,从而允许他们写入 /etc/shadow 文件。 您可以使用以下命令查看 SUID 权限 ls -ls 在您通常期望看到的位置 x 对于自定义权限:

[root@hnl ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 32680 Jan 28 2010 /usr/bin/passwd

SUID 权限可能看起来很有用(在某些情况下确实有用),但它也有潜在的危险。 如果使用不当,您可能会意外放弃 root 权限。 因此,我建议极其谨慎地使用它。

大多数管理员永远不需要使用它; 您只会在操作系统默认设置它的某些文件中看到它。

第二个特殊权限是组ID(SGID)。 该权限有两个作用。 当应用于可执行文件时,它为正在执行该文件的用户提供该文件的组所有者的权限。 因此SGID 可以做与SUID 或多或少相同的事情。 然而,SGID 几乎不用于此目的。

与 SUID 权限一样,SGID 作为默认设置应用于某些系统文件。

当应用于目录时,SGID 会很有用,因为您可以使用它来设置在该目录中创建的文件和子目录的默认组所有者。 默认情况下,当用户创建文件时,其有效主要组将设置为该文件的组所有者。

这并不总是很有用,特别是因为 Red Hat/CentOS 用户将其主要组设置为与用户同名的组,并且用户是该组的唯一成员。 因此,默认情况下,用户创建的文件将被群组共享。

想象这样一种情况:用户 linda 和 lori 从事会计工作,并且是某个组的成员 帐户。 默认情况下,这些用户是私有组的成员,并且他们是该组的唯一成员。 然而,这两个用户都是帐户组的成员,而且还作为辅助组参数。

默认情况是,当这些用户中的任何一个创建文件时,主要组将成为所有者。 因此,默认情况下,linda 无法访问 lori 创建的文件,反之亦然。 但是,如果您创建共享组目录(例如 /groups/account)并确保 SGID 权限应用于该目录,并且组帐户设置为该目录的组所有者,则在该目录中创建的所有文件及其所有子目录,还获取组帐户作为默认组所有者。

因此,SGID 权限是安装在公共组目录上的非常有用的权限。

SGID 权限显示在输出中 ls -ls 在您通常会找到组执行权限的位置:

[root@hnl data]# ls -ld account
drwxr-sr-x. 2 root account 4096 Apr 30 21:28 account

第三个特殊权限是粘性位。 在多个用户对同一目录具有写访问权限的环境中,此权限可用于保护文件免遭意外删除。 如果使用粘滞位,则只有当用户是文件或包含该文件的目录的用户所有者时才能删除该文件。 因此,它是 /tmp 目录的默认权限,并且对于公共组目录也很有用。

如果没有粘滞位,如果用户可以在目录中创建文件,他们也可以从该目录中删除文件。 在公共团体环境中,这可能会很烦人。 想象一下用户 linda 和 lori,他们都拥有 /data/account 目录的写入权限,并通过帐户组的成员身份获得这些权限。 因此,linda可以删除lori创建的文件,反之亦然。

当您应用粘滞位时,如果满足以下条件之一,用户只能删除文件:

  • 用户是文件的所有者;
  • 用户是文件所在目录的所有者。

当使用 ls -l,你可以看到粘性有点像 t 在你通常看到其他人执行权限的位置:

[root@hnl data]# ls -ld account/
drwxr-sr-t. 2 root account 4096 Apr 30 21:28 account/

应用扩展权利

要应用 SUID、SGID 和粘性位,您还可以使用 CHMOD。 SUID 的数值为 4,SGID 的数值为 2,粘性位的数值为 1。

如果您想应用这些权限,您需要添加一个四个字符的参数 CHMOD,第一个数字表示特殊权限。 例如,以下行将为目录添加 SGID 权限,并为用户设置 rwx,为组和其他设置 rx:

chmod 2755 /somedir

如果您需要在使用之前查看当前设置的权限,这是非常不切实际的 CHMOD 在绝对模式下。 (如果不这样做,您将面临覆盖权限的风险。)因此,如果您需要应用任何特殊权限,我建议您在相对模式下工作:

  1. 用于 SUID 使用 chmod u+s.
  2. 供 SGID 使用 chmod g+s.
  3. 用于粘性位使用 修改 +t后跟要设置权限的文件或目录的名称。

该表总结了您需要了解的有关管理特殊权限的所有信息。

Linux 中的权限(chown、chmod、SUID、GUID、粘滞位、ACL、umask)

使用特殊权利的示例

在此示例中,您使用特殊权限使组成员可以更轻松地共享共享组目录中的文件。 您可以分配设置的组 ID 的 ID 位以及粘性位,并看到一旦设置了它们,就会添加功能以使组成员更轻松地一起工作。

  1. 打开您作为用户 linda 的终端。 您可以使用以下命令创建用户 琳达,添加密码 密码琳达.
  2. 使用以下命令在根目录中创建 /data 目录和 /data/sales 子目录 mkdir -p /数据/销售。 执行 cd /数据/销售转至销售目录。 执行 触摸琳达1 и 触摸琳达2创建 linda 拥有的两个空文件。
  3. 执行 苏丽莎 将当前用户切换为用户 lisa,该用户也是 sales 组的成员。
  4. 执行 cd /数据/销售 并从这个目录运行 ls -l。 您将看到由用户 linda 创建且属于 linda 组的两个文件。 执行 rm -f 琳达*。 这将删除这两个文件。
  5. 执行 触摸丽莎1 и 触摸丽莎2创建用户 lisa 拥有的两个文件。
  6. 执行 苏— 将您的权限升级为root。
  7. 执行 chmod g+s,o+t /数据/销售设置组标识符 (GUID) 位以及共享组目录中的粘性位。
  8. 执行 苏琳达。 然后做 触摸琳达3 и 触摸琳达4。 您现在应该看到您创建的两个文件归 sales 组所有,该组是 /data/sales 目录的组所有者。
  9. 执行 rm -rf 丽莎*。 粘滞位可防止以用户 linda 身份删除这些文件,因为您不是这些文件的所有者。 请注意,如果用户 linda 是 /data/sales 目录的所有者,他无论如何都可以删除这些文件!

Linux 中的 ACL 管理(setfacl、getfacl)

尽管上面讨论的高级权限为 Linux 处理权限的方式添加了有用的功能,但它不允许您向单个文件的多个用户或一组授予权限。

访问控制列表提供此功能。 它们还允许管理员以复杂的方式设置默认权限,其中权限集可能因目录而异。

了解 ACL

尽管 ACL 子系统为您的服务器添加了强大的功能,但它有一个缺点:并非所有实用程序都支持它。 因此,复制或移动文件时可能会丢失 ACL 设置,并且备份软件可能不会备份 ACL 设置。

tar 实用程序不支持 ACL。 为确保创建备份时 ACL 设置不会丢失,请使用 明星 而不是焦油。 明星 使用与 tar 相同的参数; 它只是添加了对 ACL 设置的支持。

您还可以使用以下命令备份 ACL 获取方法,可以使用 setfacl 命令恢复。 要创建备份,请使用 getfacl -R /目录 > file.acls。 要从备份文件恢复设置,请使用 setfacl --restore=file.acl.

缺乏对某些工具的支持应该不是问题。 ACL 通常作为一种结构措施应用于目录,而不是应用于单个文件。
因此,它们不会太多,而只会很少,应用于文件系统中的智能地方。 因此,恢复您使用的原始 ACL 相对容易,即使您的备份软件不支持它们。

为 ACL 准备文件系统

在开始使用 ACL 之前,您可能需要准备文件系统以支持 ACL。 由于文件系统元数据需要扩展,因此文件系统上并不总是默认支持 ACL。 如果您在为文件系统配置 ACL 时收到“操作不支持”消息,则您的文件系统可能不支持 ACL。

要解决此问题,您需要添加选项 acl挂载 在 /etc/fstab 文件中,以便默认情况下使用 ACL 支持挂载文件系统。

使用 setfacl 和 getfacl 更改和查看 ACL 设置

要设置 ACL,您需要命令 Setfacl。 要查看您需要的当前 ACL 设置 获取方法. 库玛纳达 ls -l 不显示任何现有的 ACL; 它只是在权限列表后显示一个 +,这表明 ACL 也适用于该文件。

在配置 ACL 之前,最好使用以下命令显示当前 ACL 设置 获取方法。 在下面的示例中,您可以看到当前权限,如下所示 ls -l,也如图所示 获取方法。 如果你仔细观察,你会发现显示的信息是完全相同的。

[root@server1 /]# ls -ld /dir
drwxr-xr-x. 2 root root 6 Feb 6 11:28 /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

执行命令的结果 获取方法 下面您可以看到显示了三个不同对象的权限:用户、组和其他。 现在让我们添加一个 ACL 以向销售组授予读取和执行权限。 执行此操作的命令是 setfacl -mg:销售:rx /dir。 在这支球队 -m 表示当前ACL设置需要更改。 在那之后 g:销售:rx 告诉命令设置读取和执行 ACL (rx)对于组(g) 销售量。 您可以在下面看到该命令的外观,以及更改当前 ACL 设置后 getfacl 命令的输出。

[root@server1 /]# setfacl -m g:sales:rx /dir
[root@server1 /]# getfacl /dir
getfacl: Removing leading '/' from absolute path names
# file: dir
# owner: root
# group: root
user::rwx
group::r-x
group:sales:r-x
mask::r-x
other::r-x

既然您了解了如何设置组 ACL,那么理解用户和其他用户的 ACL 就很容易了。 例如,命令 setfacl -mu:li​​nda:rwx /数据 向 /data 目录中的用户 linda 授予权限,而不使他成为所有者或更改当前所有者的分配。

团队 Setfacl 有很多功能和选项。 其中一个选项尤为重要,即参数 -R。 如果使用,该选项将为您设置 ACL 的目录中当前存在的所有文件和子目录进行 ACL 设置。 建议在更改现有目录的 ACL 时始终使用此选项。

使用默认 ACL

使用 ACL 的好处之一是您可以向目录中的多个用户或组授予权限。 另一个好处是您可以在使用默认 ACL 时启用继承。

通过设置默认 ACL,您将确定对目录中创建的所有新项目设置的权限。 请记住,默认 ACL 不会更改现有文件和子目录的权限。 要更改它们,您还需要添加常规 ACL!

了解这一点很重要。 如果要使用ACL配置多个用户或组访问同一目录,则必须设置两次ACL。 首次使用 setfacl-R-m更改当前文件的 ACL。 然后使用 setfacl -md:照顾所有将要创建的新元素。

要设置默认 ACL,您只需添加选项 d 选项后 -m (顺序很重要!)。 所以使用 setfacl -md:g:销售:rx /数据如果您希望团体销售读取并执行 /data 目录中创建的所有内容。

使用默认 ACL 时,为其他人设置 ACL 也可能很有用。 通常这没有多大意义,因为您还可以使用以下命令更改其他人的权限 CHMOD。 然而,你不能做什么 CHMOD,是指定应为创建的每个新文件授予其他用户的权限。 例如,如果您想阻止其他人获得对 /data 中创建的任何内容的任何权限,请使用 setfacl -md:o::- /data.

ACL 和常规权限并不总是能够很好地集成。 如果在将项目添加到某个目录后将默认 ACL 应用到该目录,然后尝试更改正常权限,则可能会出现问题。 应用于常规权限的更改不会很好地反映在 ACL 概述中。 为避免出现问题,请首先设置普通权限,然后设置默认 ACL(之后尽量不要再次更改它们)。

使用 ACL 管理扩展权限的示例

在此示例中,您将继续使用之前创建的 /data/account 和 /data/sales 目录。 在前面的示例中,您确保销售组具有 /data/sales 的权限,并且帐户组具有 /data/account 的权限。

首先,确保帐户组对 /data/sales 目录具有读取权限,并且 sales 组对 /data/account 目录具有读取权限。

然后,您可以设置默认 ACL,以确保所有新文件都对所有新项目具有正确设置的权限。

  1. 打开终端。
  2. 执行 setfacl -mg:帐户:rx /数据/销售 и setfacl -mg:销售:rx /数据/帐户.
  3. 执行 获取方法以确保按照您想要的方式设置权限。
  4. 执行 setfacl -md:g:帐户:rwx,g:销售:rx /数据/销售设置销售目录的默认 ACL。
  5. 使用以下命令为 /data/account 目录添加默认 ACL setfacl -md:g:销售:rwx,g:帐户:rx /数据/帐户.
  6. 通过将新文件添加到 /data/sales 来验证您的 ACL 设置是否有效。 执行 触摸/数据/销售/新文件getfacl /数据/销售/newfile 检查当前权限。

使用 umask 设置默认权限

在上面您学习了如何使用默认 ACL。 如果您不使用 ACL,则有一个 shell 选项可以确定您将收到的默认权限: 遮罩 (反向掩码)。 在本节中,您将学习如何使用更改默认权限 遮罩.

您可能已经注意到,当您创建新文件时,会设置一些默认权限。 这些权限由设置决定 遮罩。 此 shell 设置适用于登录时的所有用户。 在参数中 遮罩 使用从可为文件自动设置的最大权限中减去的数值; 文件的最大设置为 666,目录的最大设置为 777。

但是,该规则有一些例外情况。 您可以找到设置的完整概述 遮罩 在下表中。

从使用的数字来看 遮罩,与命令的数字参数一样 CHMOD,第一个数字是指用户的权限,第二个数字是指组的权限,最后一个是指为其他人设置的默认权限。 意义 遮罩 默认值 022 为所有新文件提供 644,为服务器上创建的所有新目录提供 755。

所有数值的完整概述 遮罩 及其结果如下表所示。

Linux 中的权限(chown、chmod、SUID、GUID、粘滞位、ACL、umask)

查看 umask 设置如何工作的简单方法如下:从默认文件权限设置为 666 开始,然后减去 umask 以获得有效权限。 对目录执行相同操作,其默认权限为 777。

有两种方法可以更改 umask 设置:针对所有用户和针对个人用户。 如果要为所有用户设置 umask,则必须确保在运行 shell 环境文件时遵循 /etc/profile 中指定的 umask 设置。 正确的方法是在 /etc/profile.d 目录中创建一个名为 umask.sh 的 shell 脚本,并指定要在该 shell 脚本中使用的 umask。 如果在此文件中更改 umask,则会在登录服务器后应用于所有用户。

通过 /etc/profile 和关联文件设置 umask 的另一种方法(适用于所有登录用户)是更改名为 .profile 的文件中的 umask 设置,该文件在每个用户的主目录中创建。

此文件中应用的设置仅适用于个人用户; 因此,如果您需要更多详细信息,这是一个很好的方法。 我个人喜欢这个功能,将 root 用户的默认 umask 更改为 027,而普通用户则使用默认 umask 022。

使用扩展用户属性

这是有关 Linux 权限的最后一部分。

使用权限时,用户或组对象与这些用户或组对象对文件或目录具有的权限之间始终存在关系。 保护 Linux 服务器上的文件的另一种方法是使用属性。
无论访问文件的用户是谁,属性都会发挥作用。

与 ACL 一样,可能需要启用文件属性。 安装.

这是一个选项 用户属性。 如果您在使用扩展用户属性时收到“不支持操作”消息,请务必设置 安装 在 /etc/fstab 文件中

许多属性都有记录。 有些属性可用但尚未实现。 不要使用它们; 他们不会给你带来任何东西。

以下是您可以应用的最有用的属性:

A 该属性确保文件的文件访问时间不会改变。
通常,每次打开文件时,文件被访问的时间都应记录在文件的元数据中。 这会对性能产生负面影响; 因此,对于定期访问的文件,该属性 A 可用于禁用此功能。

a 此属性允许您添加但不能删除文件。

c 如果您使用的文件系统支持卷级压缩,则此文件属性可确保在首次启用压缩引擎时对文件进行压缩。

D 此属性可确保对文件的更改立即写入磁盘,而不是先缓存。 这是重要数据库文件的一个有用属性,可确保它们在文件缓存和硬盘驱动器之间不会丢失。

d 此属性可确保文件不会保存在使用转储实用程序的备份中。

I 此属性启用对其启用的目录的索引。 这为 Ext3 等原始文件系统提供了更快的文件访问,该系统不使用 B 树数据库来实现快速文件访问。

i 此属性使文件不可变。 因此,无法对文件进行任何更改,这对于需要额外保护的文件很有用。

j 该属性确保在 ext3 文件系统上,文件首先写入日志,然后写入硬盘上的数据块。

s 文件删除后0秒内,覆盖文件保存的块。 这可确保文件一旦删除就无法恢复。

u 该属性存储有关删除的信息。 这使您可以开发一个实用程序来使用此信息来挽救已删除的文件。

如果你想应用属性,你可以使用命令 聊天室。 例如,使用 chattr +s 某个文件将属性应用于某个文件。 需要删除属性吗? 然后使用 chattr -s 某个文件,它将被删除。 要获取当前应用的所有属性的概述,请使用命令 萨特.

总结

在本文中,您学习了如何使用权限。 您了解了三种基本权限、高级权限以及如何在文件系统上使用 ACL。 您还学习了如何使用 umask 参数来应用默认权限。 在本文末尾,您了解了如何使用用户扩展属性来应用额外的文件系统安全层。

如果您喜欢这个翻译,请在评论中留言。 会有更多的动力去进行有用的翻译。

我纠正了文章中的一些拼写错误和语法错误。 将一些大的段落缩减为较小的段落,以便于阅读。

而不是“只有拥有目录管理权限的人才能应用执行权限”。 更正为“只有对目录具有写访问权限的人才能应用执行权限。”,这样会更正确。

感谢您的评论 贝雷兹.

替换:
如果您不是用户的所有者,shell 将检查您是否是该组(也称为文件组)的成员。

要:
如果您不是文件的所有者,shell 将检查您是否是对该文件具有权限的组的成员。 如果您是该组的成员,您将使用为该组设置的权限访问该文件,并且 shell 将停止检查。

感谢您的评论 加密海盗

来源: habr.com

添加评论