Linux 权限:详解

本页内容

  • 理解 Linux 权限
  • 什么是文件模式?
  • 如何检查 Linux 中文件的权限
  • 什么是特殊权限?
  • 如何在 Linux 中更改权限
  • 使用 ManageEngine EventLog Analyzer 增强 Linux 文件和目录权限的安全性

Linux 权限对于确保系统安全性和完整性至关重要。它们控制谁可以访问和修改文件、目录及其他系统资源。为用户分配适当的权限对于保护敏感数据和防止未经授权的访问至关重要。设置文件权限还有助于防止意外或恶意的修改,这些修改可能会危及安全数据、系统稳定性或功能。本文将探讨 Linux 权限结构及其设置方法。

理解 Linux 权限

Linux 权限决定谁可以访问和修改文件、目录及其他系统资源。这些权限分配给每个文件或目录,基于所有者、组和其他类别。分配给文件或目录的权限称为 file modes

当用户尝试访问资源时,Linux 会检查其有效权限是否允许该操作。Effective permissions 由用户的主组和任何附加组决定。如果用户拥有必要的权限,则允许访问;否则拒绝访问。该系统提供了灵活的资源访问控制,允许根据文件和目录的敏感性及使用情况设置不同的权限。

Linux 权限的三种主要类型是:

详情 描述
读取 用户仅被允许查看文件内容。对于目录,用户仅被允许查看其中存储的文件和子目录的名称。
写入 启用写入权限后,用户可以修改和删除文件内容。用户还被允许创建、修改、删除和重命名文件及子目录。然而,与文件不同,目录需要启用执行权限,该权限类型才会生效。
执行 对于文件,执行权限允许用户将文件作为脚本执行。对于目录,用户可以访问目录并查看目录中文件的详细信息。

上述权限分配给三个类别:

用户组 描述
所有者 创建文件的用户被赋予全部权限。
一组用户共享对文件的访问权限,具有特定的权限集。
所有用户 系统中既不是文件或目录所有者,也不属于与文件或目录关联组的用户。这些用户默认被赋予最低访问权限,直到启用提升权限。

文件或目录权限可以针对上述每个用户类别授予或拒绝。它们也用数字值表示,如下表所示:

数字 符号 文件权限
0 ---
1 --x 仅执行
2 -w- 仅写入
3 -wx 写入和执行
4 r-- 仅读取
5 r-x 读取和执行
6 rw- 读取和写入
7 rwx 读取、写入和执行

文件模式通常用三字符序列表示,每个字符对应一种权限。例如,权限代码764表示所有者具有读、写和执行权限,组具有读和写权限,其他人仅具有读权限。

什么是文件模式?

在Linux中,文件模式指的是与文件或目录相关的权限和访问控制级别,用于确定谁可以读取、写入或执行该文件,以及是否设置了特殊权限。

文件模式由十个字符组成,第一个字符表示文件类型;接下来的九个字符表示文件所有者、组和其他用户的读(r)、写(w)和执行(x)权限。

让我们以字符串 drwxr-xr-x 为例,来理解文件模式的含义。

  • d 表示文件类型,是目录。
  • rwx 表示所有者具有读、写和执行权限。
  • r-x 表示组具有读和执行权限。
  • r-x 表示其他用户具有读和执行权限。

Linux中文件模式权限示例:

文件模式 描述
-rw-rw-rw- 所有系统用户均可修改的文件。
-rw------- 仅所有者可访问的文件。
drwxrwx--- 所有者和组可修改的目录。
-rw-rw-r-- 所有者和组可修改,其他用户不可修改的文件。

我们可以确认所有者通常拥有最多权限,通过限制组和其他用户的权限子集,Linux确保文件仅对需要访问的人开放,同时保护信息免受未经授权的访问。

如何检查 Linux 中文件的权限

在Linux中,有多种方法可以检查文件的权限。

  • 使用 ls 命令
  • 使用 stat 命令

使用 ls 命令:

查看文件权限最常用的方法是使用带有长格式选项(-l)的 ls 命令。

Syntax: ls -l filename

你也可以通过运行以下命令检查目录中所有文件的权限:

ls -l
长列表的输出
图1:长列表输出示例。

分析长列表输出

输出的组成部分包括:

  • 文件模式
  • 文件所有者
  • 对应组和其他用户的权限类别
  • 文件大小(字节)
  • 文件最后修改日期
  • 文件名

处理长列表时需要关注的细节。

什么是特殊权限?

Linux还有特殊权限,提供更细粒度的控制,确保用户拥有正确的访问权限,同时保护敏感数据免受未经授权的修改。三种主要的特殊权限是set user ID、set group ID和sticky bit。

setuid权限

当可执行文件设置了setuid权限时,允许用户以文件所有者的权限执行该文件,而不是以自己的权限执行。这对于需要提升权限的任务特别有用。因此,当用户执行设置了setuid位的文件时,进程将以文件所有者的用户ID(UID)运行。例如,如果root用户拥有的文件设置了setuid位,任何用户执行该文件时都将以root权限运行。

使用chmod命令设置文件的setuid权限

可以通过执行以下命令,使用chmod命令为文件分配setuid权限:

chmod 4755 filename

其中 4 是 setuid 数值的八进制表示,755 是文件的权限位。

setgid 权限

setgid 权限允许用户以文件所属组的权限执行该文件。当 setgid 应用于目录时,该目录内创建的文件将继承目录的组所有权,而不是用户的默认组。这对于允许组内用户执行需要组级权限的任务非常有用。

使用 chmod 命令在目录上设置 setgid 权限

可以通过执行以下命令,使用 chmod 命令将 setgid 权限分配给目录:

chmod 2755 dir

其中 2 是 setgid 数值的八进制表示,755 是目录的权限位。

Sticky bit

Linux 的 sticky bit 权限在您想限制组和其他用户操作时非常有用。当您在目录上设置 sticky bit 时,该目录中的文件只能由所有者删除或重命名,即使权限显示允许,其他用户也无法删除该文件。

理解并适当使用 setuid、setgid 和 sticky bit 等特殊权限对于增强 Linux 环境中的安全性和访问控制非常重要。

在目录上设置 sticky bit 权限类似于 setuid 和 setgid,sticky bit 的八进制表示为 1

如何在 Linux 中更改权限

Linux 中可以使用更改模式命令修改文件和目录权限,该命令为 chmod

使用符号模式

使用 chmod 命令更改文件权限的语法如下:

chmod [permissions] [file]

权限可以根据需要以符号模式或数字模式设置。chmod 的符号表示特别使用单个字符来指示用户类别。

以下是可用于更改用户对文件访问权限的字母和操作符完整列表:

符号 它表示的含义
u 管理该文件的用户
g 对文件具有指定访问权限的其他用户
o 其他
a 所有用户类别
+ 添加权限
- 移除权限
= 将权限设置为指定值

让我们通过一个示例来了解 chmod 命令的工作原理。

chmod u+x filename

在此示例中,执行权限授予了所有者。

同样,如果您不希望组具有写权限,使用的命令是:

chmod g-w filename

也许您想为其他用户设置读写权限。为其他用户设置此类权限的命令是:

chmod o+rw filename

您还可以通过用逗号分隔模式,一次更改所有用户类别的权限。以下命令为例:

chmod u+x, g-w, o+rw filename

chmod 命令为文件所有者提供执行权限,同时移除组的写权限,并为其他用户开启读写权限。

如果您希望所有用户类别共享文件权限,应执行以下命令:

chmod a+rw filename

在此示例中,文件的所有者、组和其他用户均可读写该文件。

使用绝对模式更改文件权限:

在此模式下,用户类别的权限用三位数字表示。这称为绝对模式,使用以下数字来确定用户所需的权限:

详情 赋予的权限
4 读 (r) 权限
2 写 (w) 权限
1 执行 (x) 权限
0 无任何权限

以下示例为所有者设置读、写和执行权限,为组设置读和执行权限,为其他用户设置只读权限:

chmod 754 filename

您还可以使用 -R 选项将权限应用于所有文件和子目录。例如,执行以下命令为目录中的所有文件授予指定的用户类别权限。

chmod -R 754 directory_name

您还可以使用 chown 命令更改 Linux 中文件或目录的所有权。该命令的语法为:

chown [ new owner or group] [ file or directory ]

例如,如果您想更改文件的所有者,执行的命令是:

chown luffy file.txt

该命令将把 file.txt 的所有者更改为 luffy。

您还可以使用以下语法同时更改所有者和组:

chown luffy:crossguild file.txt

执行上述命令将把 file.txt 的所有者更改为 luffy,组更改为 crossguild。

在此示例中,组名(crossguild)以冒号(:)开头,以便命令将其与用户帐户(luffy)区分开。

使用 ManageEngine EventLog Analyzer 增强 Linux 文件和目录权限的安全性

EventLog Analyzer 是一款 日志管理 工具,旨在收集、分析并报告网络中的各种日志,包括与文件操作相关的日志。其 文件完整性监控 功能提供对文件创建、修改、删除、权限更改以及系统文件更改等操作的可见性和详细报告。

EventLog Analyzer 中的文件完整性监控功能。
图 2:EventLog Analyzer 中的文件完整性监控功能。

这款 Linux 监控工具详细展示了谁在何时何地对 Linux 文件和目录进行了哪些更改。此外,系统管理员还可以通过预定义的警报配置文件接收异常文件权限更改的通知,例如批量权限更改、非工作时间权限更改、异常位置的权限更改等。这有助于确保文件系统中存储数据的完整性。此外,该解决方案还提供了文件权限更改及其他文件操作的详细审计跟踪。

在 EventLog Analyzer 中添加警报配置文件
图 3:在 EventLog Analyzer 中添加警报配置文件。

下一步:

试用 EventLog Analyzer,随时监控 Linux 中关键文件活动和权限更改。