zoukankan      html  css  js  c++  java
  • 【linux高级程序设计】(第八章)进程管理与程序开发 4

    修改进程用户相关信息

    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
    ", uid, euid, suid);
        printf("after setuid(501)
    ");
        setuid(501);
        uid = -1;
        euid = -1;
        suid = -1;
        getresuid(&uid, &euid, &suid);
        printf("uid = %d, euid = %d, suid = %d
    ", 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):同时设置真实用户组和有效用户组

  • 相关阅读:
    0.1+0.2==0.3?
    Tomcat 初探(三)多项目部署
    Tomcat 初探(二) server.xml 配置
    Tomcat 初探(一) 简介
    如何使用 Idea 远程调试 Java 代码
    js-将时间戳转为正常的日期
    VUE-基本的写法
    HTML-列表无缝滚动效果2(显示一个暂停3秒,滚走显示下一个)
    JS-判断用户使用的终端是安卓还是IOS
    JS-在本页面监听是否用户是点击了返回进入的(IOS返回页面时,页面未初始化)
  • 原文地址:https://www.cnblogs.com/dplearning/p/4679828.html
Copyright © 2011-2022 走看看