在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特殊权限 的教程能帮助你打下坚实基础!
