码迷,mamicode.com
首页 > 系统相关 > 详细

【linux高级程序设计】(第八章)进程管理与程序开发 4

时间:2015-07-27 14:27:56      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

修改进程用户相关信息

int access (__const char *__name, int __type):检测当前进程是否拥有对某文件的访问权限

  参数1:待访问文件

  参数2:相应权限  4(R_OK 可读),2(W_OK 可写), 1(X_OK 可执行), 0(F_OK 文件存在)

  如果具有权限,将返回0,否则返回-1.错误状态包括 EACCES(不具有访问权限), ENOENT(文件不存在), EROFS(只读的文件系统要求写权限)

int i;
if((i = access("/etc/exports", X_OK)) == -1)
{
    perror("access");
    exit(EXIT_FAILURE);
}
else
{
    //...
}

 

int setuid (__uid_t __uid):设置进程真实用户RUID

  参数为预设值的真实用户号。

  超级用户执行:将设置真实用户号UID,有效用户号EUID为指定ID,并返回0表示成功。

  普通用户执行:若设置为自己的UID值,可以成功;否则无权修改,返回-1.

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>

int main()
{
    int uid, euid, suid;
    getresuid(&uid, &euid, &suid);
    printf("uid = %d, euid = %d, suid = %d\n", uid, euid, suid);
    printf("after setuid(501)\n");
    setuid(501);
    uid = -1;
    euid = -1;
    suid = -1;
    getresuid(&uid, &euid, &suid);
    printf("uid = %d, euid = %d, suid = %d\n", uid, euid, suid);
    return 0;
}

root用户执行结果,可以成功修改

技术分享

普通用户执行结果,不可修改

技术分享

 

int setgid (__gid_t __gid):修改过进程用户的GID,使用方法与setuid类似。

int seteuid (__uid_T __uid):设置有效用户号EUID

  超级用户:设置有效用户号为指定ID,成功返回0,失败返回-1;

  普通用户:可以设置为自己的ID,设置为其他失败。

int setegid (__gid_t __gid):设置有效用户组id

int setreuid (__uid_t __ruid, __uid_t __euid):同时设置RUID和EUID

int setregid (__gid_t __rgid, __gid_t __egid):同时设置真实用户组和有效用户组

 

【linux高级程序设计】(第八章)进程管理与程序开发 4

标签:

原文地址:http://www.cnblogs.com/dplearning/p/4679828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!