修改进程用户相关信息

/*修改进程用户相关信息
 *进程的用户的相关信息有UID,EUID,GID,EGID
 *UID,GUID 进程的真实用户即运行此程序的用户和组
 *EUID,EGID 进程的有效用户和组,主要和进程的权限有关,即进程在运行时进程所拥有的权限和其
 *EUID的权限是一样的,也就是说进程所拥有的权限不一定和执行此进程的用户一样,但几乎所有情况
 *是一样的/
/*access核实用户权限
 *extern int access(_const char *_name,int _type);
 *第一个参数为欲访问文件的路径
 *第二个参数为相应的访问权限
 *#define R_OK 4 读权限
 *#define W_OK 2 写权限
 *#define X_OK 1 执行权限
 *#define F_OK 0 文件是否存在
 *如果具有测试的权限返回0否则返回-1*/
 
//在访问文件之前需要测试真实用户是否具有访问该文件的权限
 #include<stdio.h>
 #include<unistd.h>
 #include<stdlib.h>
 int main(int argc,char *argv[])
 {
        if(!(access(argv[1],R_OK)))
        {
                printf("cam read\n");
        }
        return 0;
 }
 
//设置进程真实用UID,任何进程都有一个UID,该ID为执行此程序的用户,如果要显式修改此值可以调用setuid
//对可执行文件设置 setuid 权限时,将对运行该文件的进程授予基于文件属主的访问权限。该访问权限不是基
//于正在运行可执行文件的用户。使用此特殊权限,用户可以访问通常只有属主才可访问的文件和目录。 
extern int setuid(_uid_t _uid)
extern int setgid(_gid_t _gid)//设置用户组
//返回0表示成功否则-1
/*规则:如果当前用户是超级用户,则将设置真实用户号UID,有效用户号EUID为指定ID
 *如果当前用户是普通用户,且欲设置的UID值为自己的UID,则可以修改成功,否则无权修改*/
 
//设置进程有效用户EUID,某个进程的EUID首先由该可执行文件的权限决定,如果该可执行文件没有设置setuid位
//则EUID为执行此进程的用户,如果可执行文件设置了setuid位,则EUID为该可执行文件的拥有者
//拥有者一般为创建该文件的用户
extern int seteuid(_uid_t _uid);
/*规则:如果是超级用户,将设置EUID为指定ID
 *如果是普通用户,可以设置EUID为自己的ID,如果想设置其他用户ID会失败*/
//setegid可以用来设置EGUID原理和seteuid一样
extern int setegid(_gid_t _gid)


















  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值