- 论坛徽章:
- 0
|
与一个进程相关联的ID有六个或更多,如下表:
实际用户ID
实际组ID
我们实际上是谁
这两个字段在登录时取自口令文件中的登录项。通常,在一个登录会话期间这些值并不改变,但是超级用户进程有方法改变它们
有效用户ID
有效组ID
添加组ID
用于文件存取许可权检查
决定了我们的文件访问权
保存设置-用户- ID
保存设置-组- I D
由exec函数保存
在执行一个程序时包含了有效用户ID和有效组ID的副本,在说明setuid函数时,将说明这两个保存值的作用。
通常,有效用户ID等于实际用户ID,有效组ID等于实际组ID。
每个文件有一个所有者和组所有者,所有者由stat结构中的st_uid表示,组所有者则由st_gid成员表示。
当执行一个程序文件时,进程的有效用户ID通常就是实际用户ID,有效组ID通常是实际
组ID。但是可以在文件方式字(st_mode)中设置一个特殊标志,其定义是“当执行此文件时,将进程的有效用户ID设置为文件的所有者(st_uid)”。与此相类似,在文件方式字中可以设置另一位,它使得执行此文件的进程的有效组ID设置为文件的组所有者(st_gid)。在文件方式字中的这两位被称之为设置-用户-ID(set-user-ID)位和设置-组-ID(set-group-ID)位。
例如,若文件所有者是超级用户,而且设置了该文件的 设置-用户-ID位,然后当该程序由一个进程运行时,则该进程具有超级用户优先权。不管执行此文件的进程的实际用户ID是什么, 都作这种处理。作为一个例子,UNIX程序passwd(1)允许任一用户改变其口令,该程序是一个设置-用户-ID程序。因为该程序应能将用户的新口令写入口令文件中(一般是/etc/passwd或/etc/shadow),而只有超级用户才具有对该文件的写许可权,所以需要使用设置-用户-ID特征。
因为运行设置-用户-ID程序的进程通常得到额外的许可权,所以编写这种程序时要特别谨慎。
再返回到stat函数,设置-用户-ID位及设置-组-ID位都包含在st_mode值中。这两位可用常数S_ISUID和S_ISGID测试。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34065/showart_286562.html |
|