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)相关推荐

  1. [单刷APUE系列]第八章——进程控制[1]

    目录 [单刷APUE系列]第一章--Unix基础知识[1] [单刷APUE系列]第一章--Unix基础知识[2] [单刷APUE系列]第二章--Unix标准及实现 [单刷APUE系列]第三章--文件I ...

  2. 进程控制(2):进程操作

    前言: 关于进程控制这块的好文很多,下面转载的这篇内容很丰富,也会举适当的栗子,与其写的一知半解不如参读学习别人的优秀博文,感谢原作,本系列摘录自:https://www.cnblogs.com/xi ...

  3. Linux系统状态检测及进程控制--2

    Linux系统状态检测及进程控制--1(http://crushlinux.blog.51cto.com/2663646/836481) 4.僵死(进程已终止,但进程描述符存在,直到父进程调用wait ...

  4. Linux系统编程--2(环境变量,进程控制)

    环境变量 环境变量 是指在操作系统中用来指定操作系统运行环境的一些参数 每个人用电脑的习惯不一样,比如一般把文件放到磁盘,怎么管理文件,用什么编译器,所以,环境变量就是根据每个人使用操作系统的习惯来规 ...

  5. 【转载】linux进程及进程控制

    Linux进程控制   程序是一组可执行的静态指令集,而进程(process)是一个执行中的程序实例.利用分时技术,在Linux操作系统上同时可以运行多个进程.分时技术的基本原理是把CPU的运行时间划 ...

  6. 进程控制(二)与linux下的自有服务

    一.进程动态信息查看top 第一部分 统计信息 [root@yunwei1 ~]# top top - 19:22:52 up 1:32, 2 users, load average: 0.00, 0 ...

  7. Supervisor-类unix系统下的进程控制工具

    如果你的英文足够好,请看官网的文档:http://supervisord.org/introduction.html 简介: Supervisor 类unix系统下的进程控制工具. 特性: 1.配置简 ...

  8. 【操作系统/OS笔记09】线程、线程的实现、上下文切换、进程控制

    本次笔记内容: 7.8 为什么使用线程 7.9 什么是线程 7.10 线程的实现 7.11 上下文切换 7.12 进程控制--创建进程 7.13 进程控制--加载和执行进程 7.14 进程控制--等待 ...

  9. linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数

    linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...

  10. 实验2linux进程控制与通信,实验2 进程控制与通信管理word文档良心出品

    <实验2 进程控制与通信管理word文档良心出品>由会员分享,可在线阅读,更多相关<实验2 进程控制与通信管理word文档良心出品(13页珍藏版)>请在人人文库网上搜索. 1. ...

最新文章

  1. div实现半透明遮盖层
  2. 原型继承与属性拷贝的混合应用
  3. IIS 500错误,一步帮你搞定.
  4. 弹幕,你知道是怎样练成的?
  5. JLBH – Java延迟基准线束介绍
  6. 用训练好的paddlepaddle模型继续训练模型和验证数据ckpt
  7. cmd 出现The system cannot write to the specified device问题时如何解决
  8. [转]通过秘钥实现scp不输入密码传送文件
  9. 2021爱分析・区域性银行数字化厂商全景报告
  10. UFS系列十:UFS电源管理
  11. java short转byte_java基础之short转换byte[]
  12. ZIF-67沸石咪唑酯骨架结构材料/cas46201-07-4/2-MethylimidazoleCobaltsalt
  13. 哪些晦涩难懂的shell命令都是什么的缩写?
  14. redis集群管理-5.0.14版本
  15. 三星智能手表取得快速增长,华为和小米则以低价穿戴设备取胜
  16. 微信小程序GET请求总,如果参数中出现'+ ',' '加号符号,发送到后台会出现空格
  17. python根据excel生成报表_python生成Excel图表(通过xlsxwriter)
  18. 第10章 对象和类 -1
  19. 计算机应用文摘版面费,数值计算与计算机应用发表论文期刊级别
  20. opecv BGR转NV21

热门文章

  1. 10、(十)外汇交易中专有名词整理
  2. win7 系统盘 减肥
  3. 如何解决Python中的RuntimeWarning: invalid value encountered in double_scalars问题
  4. 红色警戒2修改器原理百科(六)
  5. 丁磊:求快是创业者的思维误区,过于强调时间窗口也是一个伪命题
  6. 小米小方摄像头云存储_小米摄像头离线?
  7. VScode 删除远程资源管理器中SSH TARGETS
  8. 平板连接远程Linux,如何从Android平板电脑远程控制Ubuntu | MOS86
  9. forge不能用java打开_我玩我的世界把java更新了以后,就再也进不了加了forge的版本了,启动器,游戏,forge都重...
  10. 用二分法求下面方程在(-10,10)之间的根:2x^3-4x^2+3x-6=0