在Linux系统中,除了常见的读(r)、写(w)、执行(x)权限外,还存在三种“特殊权限”:SUID、SGID 和 Sticky Bit。这些权限对于系统安全和多用户协作至关重要。本教程将用通俗易懂的方式,帮助Linux初学者掌握这些概念。
普通权限控制用户对文件的访问,而特殊权限则影响程序运行时的身份或目录中文件的删除行为。它们通常用于特定场景,比如让普通用户临时获得更高权限来执行某些任务。
SUID 允许用户在执行某个文件时,暂时获得该文件所有者的权限。这在需要普通用户执行只有root才能操作的任务时非常有用。
例如,/usr/bin/passwd 命令就设置了SUID。普通用户修改密码时,实际是在修改 /etc/shadow 文件(只有root可写),但因为 passwd 有SUID,所以进程以root身份运行。
查看方式:
-rwsr-xr-x 1 root root 68208 Mar 10 2023 /usr/bin/passwd
注意第一个权限位中的 s(代替了原本的 x),表示SUID已设置。
设置SUID命令:
chmod u+s filename
取消SUID:
chmod u-s filename
SGID 有两种用途:
例如,一个项目目录 /project 属于 devgroup 组,设置SGID后,无论哪个用户在其中创建文件,文件的组都会是 devgroup。
查看方式(目录):
drwxrwsr-x 2 alice devgroup 4096 Jun 10 10:00 /project
注意组权限中的 s 表示SGID。
设置SGID命令:
chmod g+s directory_or_file
Sticky Bit 主要用于目录,确保只有文件所有者(或root)才能删除或重命名该目录下的文件,即使其他用户对该目录有写权限。
典型例子是 /tmp 目录,所有用户都可以在里面创建文件,但不能删除别人的文件。
查看方式:
drwxrwxrwt 10 root root 4096 Jun 12 08:30 /tmp
注意最后一位的 t(或 T)表示Sticky Bit已启用。
设置Sticky Bit命令:
chmod +t directory
特殊权限也可以用数字表示:
例如,给文件设置 rwxr-xr-x 并加上 SUID,可用:
chmod 4755 filename
给目录设置 rwxrwxrwx 并加上 SGID 和 Sticky Bit:
chmod 3777 directory
(3 = 2 + 1,即 SGID + Sticky Bit)
虽然这些权限功能强大,但滥用可能导致安全风险。例如,给可执行脚本设置SUID可能被恶意利用。因此,应仅在必要时使用,并定期检查系统中的特殊权限文件:
find / -perm -4000 2>/dev/null # 查找SUID文件find / -perm -2000 2>/dev/null # 查找SGID文件
掌握 Linux特殊权限 是系统管理和安全配置的重要一环。通过合理使用 SUID权限、SGID权限 和 Sticky Bit,你可以在保障安全的同时提升多用户环境下的协作效率。希望这篇教程能帮助你轻松入门!
本文由主机测评网于2025-11-25发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/202511590.html