在 Linux 系统中,SUID (Set User ID) 和 SGID (Set Group ID) 是两种特殊的权限位,用于控制文件的执行权限。它们允许用户以文件所有者或文件组的身份执行程序,而不是以执行者的身份。这种机制经常用于提升权限,但如果配置不当,可能带来安全风险。
1. SUID(Set User ID)
SUID 位是一种权限设置,应用于可执行文件上。当设置了 SUID 位的文件被执行时,进程将以该文件所有者的身份运行,而不是执行者的身份。
SUID 的应用场景:
- 例如
/bin/passwd
程序:该程序允许普通用户修改自己的密码。密码文件/etc/shadow
只能被root
读取和修改,但普通用户可以通过执行设置了 SUID 位的passwd
命令,临时以root
权限运行,从而修改自己的密码。
检查 SUID 权限:
你可以使用 ls -l
命令来查看文件的权限,如果文件有 SUID 位,它将显示为权限中的 s
。
$ ls -l /bin/passwd
-rwsr-xr-x 1 root root 54232 Jun 5