1. 进程真实用户号(RUID)
创建该进程的用户UID为进程的真实用户号(RUID);
读取:getuid()
2. 进程有效用户号
EUID主要用于权限检查,多数情况下,EUID和UID相同,但是当设置了setuid位之后,任何运行该程序的进程均可获得该文件拥有者的权限,即EUID在此时等于程序拥有者的UID。
参考:passwd进程,用户可以修改自身的密码信息,而passwd文件的属主是root。
设置setuid位:chmod u+s file
读取:geteuid()
3. 进程用户组号(GID)
创建该进程的用户 所在的组号。
读取:getgid()
4. 有效进程用户组号(EGID)
类似于EUID,但是影响的权限位为setgid。
读取:getegid()
附权限位相关:
set uid ;set gid;sticky bit区别
每一个文件有所有者及组编号,set uid ;set gid可以改变用户对文件具有的权限:写和执行.
setuid: 在执行时具有文件所有者的权限.
setgid: 设置目录. 一个目录被标上setgid位,此目录下创建的文件继承该目录的属性.
sticky bit: 该位可以理解为防删除位. 设置sticky bit位后,就算用户对目录具有写权限,但也只能添加文件而不能删除文件。
如何设置:
操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,
1) chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效,U=用户)
chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效,g=组名)
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)
2) 采用八进制方式. 这一组八进制数字三位的意义如下,
abc
a - setuid位, 如果该位为1, 则表示设置setuid
b - setgid位, 如果该位为1, 则表示设置setgid
c - sticky位, 如果该位为1, 则表示设置sticky
设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
如:
rwsrw-r-- 表示有setuid标志 (rwxrw-r--:rwsrw-r--)
rwxrwsrw- 表示有setgid标志 (rwxrwxrw-:rwxrwsrw-)
rwxrw-rwt 表示有sticky标志 (rwxrw-rwx:rwxrw-rwt)