分类
![](https://img-blog.csdn.net/20170504194621991?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91YmxlX2hhcHBpbmVzcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
用户标识符:
几个典型进程的ID及其类型和功能
![](https://img-blog.csdn.net/20170504195914637?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91YmxlX2hhcHBpbmVzcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
常见标识符的返回值
#include<sys/types.h>
#include<unistd.h>
pid_t getpid(void); //返回调用进程的ID
pid_t getppid(void); //返回调用进程的父进程ID
uid_t getuid(void); //返回调用进程的实际用户ID
uid_t geteuid(void); //返回调用进程的有效用户ID
pid_t getgid(void); //返回调用进程的实际组ID
pid_t getegid(void); //返回进程的有效组ID
总结:
(1)实际用户ID和实际用户组ID一般只是起标识作用;
(2)有效用户ID和有效用户组ID一般是与当前给定的文件权限有关系;
(3)通常情况下实际用户和有效用户ID值是相同的;
代码示例:
![](https://img-blog.csdn.net/20170504204821422?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91YmxlX2hhcHBpbmVzcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
运行结果:
![](https://img-blog.csdn.net/20170504204900037?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91YmxlX2hhcHBpbmVzcw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
实际用户和有效用户的关系:
suid——设置用户ID
只能给拥有者的执行权限设置,凡是设置了用户id的人,执行该程序时都是以拥有者的执行者权限去运行
sgid——设置用户组ID
只能给拥有者的执行权限设置,凡是设置了用户id的人,执行该程序时都是以拥有者的所属组权限去运行
给文件加SUID和SGID的方法
chmod u+s filename 设置suid
chmod u-s filename 取消suid
chmod g+s filename 设置sgid
chmod g-s filename 去掉sgid
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)