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

来源:这里教程网 时间:2026-03-28 11:03:57 作者:

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

一、什么是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)有两种应用场景:

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

例如,一个团队共享的项目目录,希望所有成员创建的文件都属于同一个组,就可以使用 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特殊权限 的教程能帮助你打下坚实基础!

相关推荐

热文推荐