返回

深入解读 Linux File 特殊权限的奇妙世界

后端

Linux 文件权限简介

在 Linux 系统中,每个文件都具有一个权限属性,由三组数字组成:

  • 所有者权限 (User): 第一个数字表示文件所有者的权限。
  • 组权限 (Group): 第二个数字表示文件所属组的权限。
  • 其他用户权限 (Other): 第三个数字表示除所有者和组之外的其他用户的权限。

每个数字由三个字符组成,分别表示读、写、执行权限。例如,数字 755 表示文件所有者具有读、写、执行权限,文件所属组具有读、执行权限,其他用户只有读权限。

特殊权限:提升文件访问控制的利器

除了常见的读、写、执行权限之外,Linux 还提供了三种特殊权限:setuid、setgid 和 sticky bit。这些特殊权限允许用户在某些情况下绕过常规的权限设置,从而实现更精细的访问控制。

setuid

setuid 权限允许二进制可执行文件在执行时暂时提升其权限。当普通用户执行具有 setuid 权限的可执行文件时,该文件将以文件的拥有者的权限运行。例如,具有 setuid 权限的 passwd 命令允许普通用户修改 /etc/shadow 文件,尽管该文件通常只有 root 用户才能修改。

setgid

setgid 权限允许二进制可执行文件在执行时暂时提升其组权限。当普通用户执行具有 setgid 权限的可执行文件时,该文件将以文件的所属组的权限运行。例如,具有 setgid 权限的 apache2 可执行文件允许普通用户在 Apache Web 服务器上运行进程,尽管该进程通常只能由 apache 组的用户运行。

sticky bit

sticky bit 权限允许文件所有者防止其他用户删除或重命名该文件。当文件具有 sticky bit 权限时,只有该文件的拥有者或 root 用户才能删除或重命名该文件。例如,sticky bit 权限通常用于 /tmp 目录,以防止普通用户删除其他用户的临时文件。

实例解析:深入理解特殊权限的应用

setuid 实例:passwd 命令

passwd 命令允许普通用户更改自己的密码。该命令具有 setuid 权限,因此普通用户在执行 passwd 时,可以暂时提升其权限,以 root 用户的身份修改 /etc/shadow 文件。

setgid 实例:apache2 可执行文件

apache2 可执行文件是 Apache Web 服务器的主程序。该文件具有 setgid 权限,因此普通用户在执行 apache2 时,可以暂时提升其组权限,以 apache 组的身份运行进程。这允许普通用户在 Apache Web 服务器上运行进程,而无需成为 apache 组的成员。

sticky bit 实例:/tmp 目录

/tmp 目录是一个临时文件存储目录。该目录通常具有 sticky bit 权限,以防止普通用户删除其他用户的临时文件。这确保了每个用户只能删除自己的临时文件,而不会误删其他用户的临时文件。

结语

特殊权限是 Linux 文件系统权限管理中不可或缺的组成部分。它们允许用户设置更细粒度的访问控制,从而提高文件系统的安全性。通过了解和正确使用特殊权限,系统管理员可以更好地保护文件系统中的数据,并为用户提供更加安全的访问环境。