当前位置:首页 > Ubuntu > 正文

深入理解Ubuntu特殊权限(SUID、SGID与Sticky Bit详解)

在Linux系统(包括Ubuntu)中,除了常见的读(r)、写(w)、执行(x)权限外,还有三种特殊的权限位:SUID、SGID 和 Sticky Bit。这些权限虽然不常被普通用户接触,但在系统管理和安全控制中起着至关重要的作用。本文将用通俗易懂的方式,带你全面了解这三种Ubuntu特殊权限

深入理解Ubuntu特殊权限(SUID、SGID与Sticky Bit详解) Ubuntu特殊权限 SUID权限 SGID权限 Sticky Bit权限 第1张

一、什么是SUID权限?

SUID(Set User ID)是一种特殊权限,当它被设置在可执行文件上时,任何用户运行该文件时,都会以文件所有者的身份执行,而不是以运行者的身份。

最经典的例子是 /usr/bin/passwd 命令。普通用户没有权限直接修改 /etc/shadow 文件,但通过 passwd 命令却可以修改自己的密码——这是因为 passwd 被设置了 SUID 权限,运行时会临时获得 root 权限。

如何查看和设置SUID?

使用 ls -l 查看文件权限时,如果属主的执行位(x)被替换为 s,说明设置了 SUID:

-rwsr-xr-x 1 root root 63744 Jan 10  2023 /usr/bin/passwd  

设置 SUID 的方法有两种:

# 方法1:符号模式chmod u+s filename# 方法2:数字模式(在权限前加4)chmod 4755 filename  

二、SGID权限详解

SGID(Set Group ID)有两种应用场景:

  1. 用于可执行文件:运行该文件时,进程将以文件所属组的身份运行。
  2. 用于目录:在该目录下创建的新文件或子目录,会自动继承父目录的组所有权(而不是创建者的默认组)。

例如,一个团队共享的项目目录,希望所有成员创建的文件都属于同一个组,就可以使用 SGID。

如何查看和设置SGID?

ls -l 输出中,如果属组的执行位显示为 s,说明设置了 SGID:

drwxrwsr-x 2 user devgroup 4096 Jun 10 10:00 shared_project/  

设置 SGID 的命令:

# 符号模式chmod g+s directory_or_file# 数字模式(在权限前加2)chmod 2775 shared_project/  

三、Sticky Bit权限(粘滞位)

Sticky Bit 最初用于程序缓存,如今主要用于公共可写目录

最典型的例子是 /tmp 目录:

drwxrwxrwt 10 root root 4096 Jun 10 11:00 /tmp  

注意最后一位是 t(如果原本有执行权限)或 T(无执行权限),这就是 Sticky Bit 的标志。

如何设置Sticky Bit?

# 符号模式chmod o+t directory# 数字模式(在权限前加1)chmod 1777 /tmp  

四、权限组合与注意事项

这三种特殊权限可以组合使用。例如:

chmod 7644 filename  # SUID + SGID + Sticky Bit(虽然不常见)  

但请注意:

  • SUID 对目录无效(在大多数Linux系统中被忽略)。
  • 不要随意给脚本设置 SUID,存在严重安全风险。
  • Sticky Bit 只对目录有意义,对文件已无实际作用。

总结

掌握 SUID权限SGID权限Sticky Bit权限 是理解 Linux/Ubuntu 系统安全机制的重要一步。合理使用这些特殊权限,可以在保证功能的同时提升系统安全性。

记住:权限是把双刃剑,用得好是盾牌,用不好就是漏洞。希望这篇关于 Ubuntu特殊权限 的教程能帮助你打下坚实基础!