实际用户ID :确定“我是谁”,当用户使用用户名和密码成功登录后一个UNIX系统后就唯一确定了他的实际ID;
有效用户ID:通常情况下和实际用户ID一致,它限定了用户对资源的访问权限,在某个文件设置了设置用户ID位后,有效用户ID为文件所有者ID;
设置用户ID:用于提升其它用户对资源的访问权限。
当有了设置用户ID位之后,文件的有效用户ID就是文件的拥有者ID。一个UNIX上最常见的例子就我们知道linux系统的密码都存在了/etc/shadow这个文件里,为什么所有的登录用户都可以做更改呢?
/etc/shadow文件的属性为:
-r-------- 1 root root
也就是说只有有效用户为root才能访问该文件。
在更改密码的时候,我们输入passwd,实际上执行的是/usr/bin/passwd, 查看这个文件属性如下:
-r-s--x--x 1 root root
那么不同的用户登录是如何能够更改密码的呢?
原因就是因为/usr/bin/passwd程序有设置用户ID位,所以其它不同的用户在登录的时候,执行该程序的时候,有效用户都会成为文件的拥有者root,这样每个登录的用户便拥有了执行文件的权限。文件有设置用户ID位时,内核会将执行进程的有效ID临时更改为文件的所有者ID。设置用户ID位通常添加在文件的可执行权限位上。所以,一般也是对可执行文件设置该位才有意义。