目录

一、切换权限使用到的函数

二、进程权限切换步骤


一、切换权限使用到的函数

用于切换进程权限的主要函数如下:

#include <sys/types.h>
#include <stdio.h>
#include <pwd.h>
#include <unistd.h>int getpwnam_r(const char *name, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result);
int setgid(gid_t gid);
int setgid(gid_t gid);

二、进程权限切换步骤

2.1)通过函数 getpwnam_r() 获取用户名对应的 uid 和 gid

    const char *username = "nginx";long const buflen = sysconf(_SC_GETPW_R_SIZE_MAX);if (buflen == -1) {fprintf(stderr, "can not get _SC_GETPW_R_SIZE_MAX\n");return 1;}   // requires c99char buf[buflen];struct passwd pwbuf, *pwbufp;if (0 != getpwnam_r(username, &pwbuf, buf, buflen, &pwbufp) || !pwbufp) {fprintf(stderr, "can not get uid for username : %s\n", username);return 1;}

2.2)通过函数 setuid() 和 setgid() 设置当前进程的 uid 和 gid

    if(setgid(pwbuf.pw_gid) < 0) {fprintf(stderr, "setgid failed\n");return 1;}   if(setuid(pwbuf.pw_uid) < 0) {fprintf(stderr, "setuid failed\n");return 1;} 

参考:https://github.com/nginx/nginx/blob/master/src/os/unix/ngx_process_cycle.c:799


Linux:切换当前进程的权限相关推荐

  1. Linux切换用户/超级用户权限

    在Linux操作系统(CentOS8)上安装yum工具时出现了问题 错误为:Error: This command has to be run with superuser privileges (u ...

  2. Linux内核分析---进程的创建,执行与切换

    学号:210 "原创作品转载请注明出处 + https://github.com/mengning/linuxkernel/ " 一.实验要求 从整理上理解进程创建.可执行文件的加 ...

  3. linux切换root权限

    linux切换root权限 问题描述 有些指令不能直接执行,得启用roott权限才能用,通常进入root模式的方法是: su root 有时候这样获取root权限的时候会提示失败: su: Authe ...

  4. Linux中断与进程切换,结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程...

    @ 实验环境 OS Linux cj-virtual-machine 5.3.0-51-generic 虚拟机 QEMU 内核版本 5.3.4 调式方法 GDB PS:调试环境安装请看上一篇博客汇编级 ...

  5. 《Linux内核分析》(二)——从一个简单Linux内核分析进程切换原理

    转载:https://blog.csdn.net/FIELDOFFIER/article/details/44280717 <Linux内核分析>MOOC课程http://mooc.stu ...

  6. linux内核的进程管理,Linux内核设计与实现——进程管理

    主要内容 进程 进程描述符及任务结构 进程创建 线程在linux中的实现 进程终结 1. 进程 进程不仅仅是一段可执行程序代码,还包含其他资源,如打开的文件,挂起的信号,内核内部数据,处理器状态,一个 ...

  7. Linux 线程与进程,以及通信

    http://blog.chinaunix.net/uid-25324849-id-3110075.html 部分转自:http://blog.chinaunix.net/uid-20620288-i ...

  8. linux 文件夹换所属用户,Linux中账号管理之权限管理(下)

    linux中的账号管理我们在前面两张已经介绍了一些用户和组的相关概念,常用的配置文件,命令的使用.现在我们来看看账号管理中最傲娇的部分就是我们的权限管理. 一.简单介绍权限的概念 以install.l ...

  9. Linux入门之进程管理(4)之进程与文件

    Linux入门之进程管理(4)之进程与文件 前面使用进程相关命令管理工具都是根据进程编号或者进程名称及其其它属性信息来查看和处理相关进程的,但是在某些情况下,想要查看某个文件或者某个设备被哪些进程所使 ...

最新文章

  1. MyEclipse中的快捷键
  2. 华为诺亚方舟开源预训练模型“哪吒”,4项任务均达到SOTA
  3. 数据科学| 蛋白向量分析
  4. IPython基础使用_Round2
  5. Burp Suite安装配置
  6. [摘自MSDN] ASP.Net2.0学习 [1] 母版页 2 : 创建和使用 ASP.NET 母版页
  7. Hazelcast入门指南第4部分
  8. 4、容器虚拟化网络概述
  9. LeetCode 1736. 替换隐藏数字得到的最晚时间
  10. Java 读书笔记 (十二) Java Character 类
  11. python中0xff_强悍的Python读取大文件的解决方案
  12. 一般处理程序在VS2012中打开问题
  13. 常微分方程的近似计算和误差估计(2)
  14. 定时刷新页面 html,js实现定时刷新页面的代码
  15. 如何解除计算机上的安全警报,怎么关闭windows的安全警报
  16. jdk提供的用于并发编程的同步器有哪些
  17. 星星之火OIer:2019.1.5考试总结
  18. 线程池ThreadPoolExecutor与ForkJoinPool
  19. 二、《云原生 | Kubernetes篇》Kubernetes学习-K8S安装篇-Kubeadm安装高可用K8S集群--生产环境
  20. Day73_Spark核心原理加强

热门文章

  1. harmonyos2.0手机系统,harmonyos2.0手机
  2. ABP项目备忘(报错及配置)
  3. 哈哈日语 日语基础语法——连用形
  4. tt公路车Java配置怎么样_更头疼| Specialized这十款公路车该怎么选?
  5. MUI的。。。三个意思
  6. thinkphp中提示Warning:Invalid argument supplied for foreach()的解决方法
  7. 人体姿态估计 | 七篇你必须仔细阅读的论文
  8. 吴甘沙:写在驭势科技六周年丨再向虎山行
  9. 【公开课】印度理工学院 - CMOS射频集成电路(L3)课堂笔记
  10. 2014年奔驰 E300 警告灯与跛行模式 Part 1