/proc/pid/status

参考博客:https://blog.csdn.net/beckdon/article/details/48491909

参考博客:https://www.cnblogs.com/arnoldlu/p/12162860.html

Uid:    0       0       0       0
Gid:    0       0       0       0

解释: 第一列数字(RUID):实际用户ID,指的是进程执行者是谁. 第二列数字(EUID):有效用户ID,指进程执行时对文件的访问权限. 第三列数字(SUID):保存设置用户ID,作为effective user ID的副本,在执行exec调用时后能重新恢复原来的effectiv user ID. 第四列数字(FSUID):目前进程的文件系统的用户识别码.一般情况下,文件系统的用户识别码(fsuid)与有效的用户识别码(euid)是相同的. 这里重点说明RUID和EUID,我们用test用户启动top,如下: 终端1)

su - test
top

查看该进程的EUID和RUID,如下: 终端2)

cat /proc/`pgrep top|grep -v grep`/status
前面略
Uid:    1002    1002    1002    1002
Gid:    1003    1003    1003    1003
后面略

注:这里我们看到进程的RUID和EUID都变成了1002.

我们将程序top加上setuid权限,如下:

chmod +s /usr/bin/top

重新运行top程序,并查看它的RUID和EUID,如下:

cat /proc/`pgrep top|grep -v grep`/status
前面略
Uid:    1002    0       0       0
Gid:    1003    0       0       0
后面略

注:我们看到RUID还是1002,说明程序是由test用户(UID=1002)启动的,而程序设定了setuid,那么在程序运行时是用程序的owner权限来运行程序,而不是启动的用户权限. 由于top的owner是root,那么它的EUID是0.

文章目录