轻松理解Linux粘滞位

SUID 是 Set User ID
作用是让程序执行者具有该程序所有者的权限;
如果没有设置,程序执行者具有执行用户的权限。SUID 位可以通过 chmod u+s 设置。

在Linux中,所有账号的密码记录在 /etc/shadow文件中,并且只有root可以读写这个文件。那么,一个普通用户通过命令 passwd 修改自己密码的过程中肯定就需要写 /etc/shadow这个文件,之所以能这么做是因为 /usr/bin/passwd 设置了SUID位:

-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd

Linux 内核主要是根据 EUID(effective user id) 和 EGID(effective group id) 来确定进程对资源的访问权限。 如果进程对应的程序没有设置 SUID 或 SGID 位,则 euid=uid egid=gid,分别是执行这个程序的用户的 uid 和 gid;反之,则 euid 和 egid 变为程序所有者的 uid和 gid。

因此如果能拦截有粘滞位的程序在降低权限之前,实施越权访问或操作,就很有可能最终获得root权限或以root身份进行越权操作。

你可能感兴趣的:(笔记,Linux技术)