1. 更改用户ID和组ID
1.1. 设置用户ID和设置组ID
与进程相关联的ID有6个或更多,如下:
实际用户ID |
我们实际上是谁 |
实际组ID |
|
有效用户ID |
用于文件访问权限检查 |
有效组ID |
|
附加组ID |
|
保存的设置用户ID |
由exec函数保存 |
保存的设置组ID |
实际用户ID和实际组ID标识我们是谁。这两个字段在登录时取自口令文件中的登录项。
有效用户ID、有效组ID和附加组ID决定了我们的文件访问权限。
保存的设置用户ID和保存的设置组ID在执行一个程序时包含了有效用户ID和有效组ID的副本。
当执行一个程序文件时,进程的有效用户ID通常就是实际用户ID,有效组ID就是实际组ID。但是如果在文件模式字(st_mode)中设置一个特殊标志,其含义是"当执行此文件时,将进程的有效用户ID设置为文件所有者的用户ID(se_uid)"。与此类似,如果在文件模式字(st_mode)中设置另一位,它使得将执行此文件的进程的有效组ID设置为文件组所有者ID(se_gid)。在文件模式字中的这两位被称为设置用户ID位(set-user-ID)和设置用户组