/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.