博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【linux高级程序设计】(第八章)进程管理与程序开发 4
阅读量:5328 次
发布时间:2019-06-14

本文共 1303 字,大约阅读时间需要 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
#include
#include
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):同时设置真实用户组和有效用户组

 

转载于:https://www.cnblogs.com/dplearning/p/4679828.html

你可能感兴趣的文章
ios面试题
查看>>
Java文件编码自动转换工具类(只改变编码,不会改变文件内容)
查看>>
【BZOJ3894】文理分科(最小割)
查看>>
MyEclipse配色
查看>>
转 GRE -- ME 似乎有件事,一直等待着我去做,努力去做。
查看>>
performancepoint里面建立数据源的时候,总是发生以下的报警(转的)我也遇到了这个问题...
查看>>
[转]SAPUI5 (01) - OpenUI5环境搭建
查看>>
[转]Understanding Integration Services Package Configurations
查看>>
[转]教你如何在博客园放“可运行"代码
查看>>
Ubuntu下安装php7.1的gd,mysql,pdo_mysql扩展库
查看>>
在Pyramid中使用Mako模板以及默认和.html后缀关联
查看>>
记redis的一个测试
查看>>
xampp 无法启动appche mysql
查看>>
HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效。...
查看>>
Unity 之圆环算法
查看>>
ip地址查询
查看>>
php二维数组按照键值排序的方法
查看>>
python内置函数每个执行一次
查看>>
进程池
查看>>
软件需求分析(补发)
查看>>