对用户ID、组ID、附属组ID、有效、实际、设置用户、设置组ID等的理解

1、什么是用户ID、组ID、附属组ID?

(1)用户ID: 就是用户的一个身份标识,操作系统通过用户ID来知道用户是谁。
(2)组ID: 一个用户不仅有一个用户ID,他还属于一个组(或者多个组),设置组ID的目的是在组间可以共享资源,方便用户组间合作,共同开发同一个项目。
(3)附属组ID:一个用户可能不止参与一个项目 ,因此一个用户可以属于多个组。区分组ID和附属组ID的方式是:组ID指的是创建用户的时候分配的ID号。附属组ID则是一个用户除此之外的所属组的ID号。

2、与一个进程有关的ID有多少个?

至少6个。实际用户ID、实际组ID、有效用户ID、有效组ID、附属组ID、设置用户ID、设置组ID。

用户登录到一个系统上后,其实这也是一个进程。这个用户再运行程序什么的都是由这个进程fork出去的进程。

3、什么实际用户ID、实际组ID?

有效用户ID和有效组ID指的是当前是谁在登录在系统上,他所属于的组是什么。这两个ID是在登录时获取到的。一般情况下在登录期间这两个ID是不会发生改变的。

4、什么是有效用户ID、有效组ID?

有效用户ID和有效组ID通常就是实际用户ID和实际组ID。当执行一个文件的时候进程的有效用户ID和有效组ID以及附属组ID决定当前进程的文件访问权限。

进程才涉及到有效用户ID和有效组ID。当执行一个程序文件时,有效用户ID和有效组ID通常就是实际用户ID和实际组ID。

但是,可以在文件模式字中设置一个特殊标志,使得当执行此程序文件时,有效用户ID和有效组ID不再是实际用户ID和实际组ID,而变成文件所有者用户ID和文件所有者组ID。

5、什么是保存的设置用户ID、保存的设置组ID?

在程序开始执行的时候,要将进程的有效用户ID和有效组ID保存住。这时保存的有效用户ID和有效组ID的副本称为设置用户ID和设置组ID。(后面进程的有效用户ID和有效组ID可能会发生变化。)

6、什么是设置用户ID位,什么是设置组ID位?

每一个文件都有所有者和所有者ID,文件的这两个属性由stat结构中的st_uid和st_gid 指定。 当执行一个程序文件时,一般来说,进程的有效用户ID就是实际用户ID,有效组ID就是实际组ID。但是可以在文件模式字中设置一个特殊标志位,设置玩这个标志后,当执行这个程序时,有效用户ID将会被设置为文件所有者ID。与此类似的还有一个文件所属组ID。在文件模式字中,这两位被称为设置用户ID位,设置组ID位。

在执行程序文件时,是否打开设置用户ID 和设置组ID 开关要特别小心,因为如果文件的所有者是超级用户的话,那么该进程将会拥有超级用户权限。

是不是说只有文件的所有者才可以设置文件的设置组ID位设置用户ID位

原文地址:https://www.cnblogs.com/lasnitch/p/12764159.html