APUE---chap8(进程控制)---8.11(setuid/getuid)
8.11 更改用户ID和更改组ID
- 关于实际用户ID和有效ID,可查看4.4
setuid()可以设置 实际用户ID(user), 有效用户ID(effective),保存的用户ID(save)
setgid()可以设置实际组ID(user),有效组ID(effective),保存的用户ID(save)
- getuid()和geteuid()
uid_t getuid(void);uid_t geteuid(void);DESCRIPTIONgetuid() returns the real user ID of the calling process.//获取实际用户 idgeteuid() returns the effective user ID of the calling process.//获取有效用户 id
- setuid的调用例子
// main.c文件 #include <stdio.h> #include <stdlib.h> #include <unistd.h>int main(int argc, char **argv) {if (argc < 3) {fprintf(stderr, "usage...\n");exit(1);}pid_t pid = fork();if (pid == 0) {setuid(atoi(argv[1])); // 将effective id设为uidexecvp(argv[2], argv + 2);perror("execvp()");exit(1);}wait(NULL); // 父进程等待exit(0); }// 编译:make main // 可执行程序./main把自己设置为root用户的权限 // lbw@123:~/lbw/gitNote/chap8$ ./main 0 cat /etc/shadow // cat: /etc/shadow: 权限不够// 查看main程序的所有者 // lbw@123:~/lbw/gitNote/chap8$ ll -l main // -rwxrwxr-x 1 lbw lbw 17040 2月 20 21:02 main*// 修改main程序的所有者:由lbw变为root // lbw@123:~/lbw/gitNote/chap8$ sudo chown root main // lbw@123:~/lbw/gitNote/chap8$ ll -l main // -rwxrwxr-x 1 root lbw 17040 2月 20 21:02 main*//修改权限 // lbw@123:~/lbw/gitNote/chap8$ sudo chmod u+s main // -rwsrwxr-x 1 root lbw 17040 2月 20 21:02 main*//执行成功 // lbw@123:~/lbw/gitNote/chap8$ ./main 0 cat /etc/shadow
- 不太清晰,后续继续更新学习。
8.13 system()函数
int system(const char *command); //相当于在/bin/bash中执行command命令
system()函数中调用了:fork+exec+wait函数,若3个函数执行成功,返回的是shell的终止状态。若出错,则是返回fork+exec+wait函数相关的错误提示。
APUE---chap8(进程控制)---8.11(setuid/getuid)相关推荐
- [单刷APUE系列]第八章——进程控制[1]
目录 [单刷APUE系列]第一章--Unix基础知识[1] [单刷APUE系列]第一章--Unix基础知识[2] [单刷APUE系列]第二章--Unix标准及实现 [单刷APUE系列]第三章--文件I ...
- 进程控制(2):进程操作
前言: 关于进程控制这块的好文很多,下面转载的这篇内容很丰富,也会举适当的栗子,与其写的一知半解不如参读学习别人的优秀博文,感谢原作,本系列摘录自:https://www.cnblogs.com/xi ...
- Linux系统状态检测及进程控制--2
Linux系统状态检测及进程控制--1(http://crushlinux.blog.51cto.com/2663646/836481) 4.僵死(进程已终止,但进程描述符存在,直到父进程调用wait ...
- Linux系统编程--2(环境变量,进程控制)
环境变量 环境变量 是指在操作系统中用来指定操作系统运行环境的一些参数 每个人用电脑的习惯不一样,比如一般把文件放到磁盘,怎么管理文件,用什么编译器,所以,环境变量就是根据每个人使用操作系统的习惯来规 ...
- 【转载】linux进程及进程控制
Linux进程控制 程序是一组可执行的静态指令集,而进程(process)是一个执行中的程序实例.利用分时技术,在Linux操作系统上同时可以运行多个进程.分时技术的基本原理是把CPU的运行时间划 ...
- 进程控制(二)与linux下的自有服务
一.进程动态信息查看top 第一部分 统计信息 [root@yunwei1 ~]# top top - 19:22:52 up 1:32, 2 users, load average: 0.00, 0 ...
- Supervisor-类unix系统下的进程控制工具
如果你的英文足够好,请看官网的文档:http://supervisord.org/introduction.html 简介: Supervisor 类unix系统下的进程控制工具. 特性: 1.配置简 ...
- 【操作系统/OS笔记09】线程、线程的实现、上下文切换、进程控制
本次笔记内容: 7.8 为什么使用线程 7.9 什么是线程 7.10 线程的实现 7.11 上下文切换 7.12 进程控制--创建进程 7.13 进程控制--加载和执行进程 7.14 进程控制--等待 ...
- linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数
linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...
- 实验2linux进程控制与通信,实验2 进程控制与通信管理word文档良心出品
<实验2 进程控制与通信管理word文档良心出品>由会员分享,可在线阅读,更多相关<实验2 进程控制与通信管理word文档良心出品(13页珍藏版)>请在人人文库网上搜索. 1. ...
最新文章
- div实现半透明遮盖层
- 原型继承与属性拷贝的混合应用
- IIS 500错误,一步帮你搞定.
- 弹幕,你知道是怎样练成的?
- JLBH – Java延迟基准线束介绍
- 用训练好的paddlepaddle模型继续训练模型和验证数据ckpt
- cmd 出现The system cannot write to the specified device问题时如何解决
- [转]通过秘钥实现scp不输入密码传送文件
- 2021爱分析・区域性银行数字化厂商全景报告
- UFS系列十:UFS电源管理
- java short转byte_java基础之short转换byte[]
- ZIF-67沸石咪唑酯骨架结构材料/cas46201-07-4/2-MethylimidazoleCobaltsalt
- 哪些晦涩难懂的shell命令都是什么的缩写?
- redis集群管理-5.0.14版本
- 三星智能手表取得快速增长,华为和小米则以低价穿戴设备取胜
- 微信小程序GET请求总,如果参数中出现'+ ',' '加号符号,发送到后台会出现空格
- python根据excel生成报表_python生成Excel图表(通过xlsxwriter)
- 第10章 对象和类 -1
- 计算机应用文摘版面费,数值计算与计算机应用发表论文期刊级别
- opecv BGR转NV21
热门文章
- 10、(十)外汇交易中专有名词整理
- win7 系统盘 减肥
- 如何解决Python中的RuntimeWarning: invalid value encountered in double_scalars问题
- 红色警戒2修改器原理百科(六)
- 丁磊:求快是创业者的思维误区,过于强调时间窗口也是一个伪命题
- 小米小方摄像头云存储_小米摄像头离线?
- VScode 删除远程资源管理器中SSH TARGETS
- 平板连接远程Linux,如何从Android平板电脑远程控制Ubuntu | MOS86
- forge不能用java打开_我玩我的世界把java更新了以后,就再也进不了加了forge的版本了,启动器,游戏,forge都重...
- 用二分法求下面方程在(-10,10)之间的根:2x^3-4x^2+3x-6=0