#include <unistd.h>

#include <sys/types.h>

uid_t getuid(void);

uid_t geteuid(void);

作用:getuid返回当前进程的实际用户ID;geteuid返回当前用户的有效用户ID。这两个总是成功,不会失败。

#include <unistd.h>

#include <sys/types.h>

gid_t getgid(void);

gid_t getegid(void);

作用:getuid返回当前进程的实际用户组ID;geteuid返回当前用户的有效用户组ID。这两个总是成功,不会失败。因此返回值总是大于或等于0,0为超级用户root。

uideuidgidegid的区别。

linux系统中每个进程都有2个用户ID,分别为用户ID(uid)和有效用户ID(euid),UID一般表示进程的创建者(属于哪个用户创建),而EUID表示进程对于文件和资源的访问权限(具备等同于哪个用户的权限)。C语言中,可以通过函数getuid( )和geteuid()来获得进程的两个ID值。当一个用户登陆系统时,系统会将UID和EUID都赋值为/etc/passwd文件中的UID,一般情况下2个ID是相同的,但是某些情况下会出现2个ID不同的情况。
gid和egid同理。

首先,修改一下文件属性,setuid或setgid:chmod u+s printid 这样一来,文件在执行阶段具有文件所有者的权限,此时进程的euid为文件所有者的ID;如在使用sudo命令时,euid为root用户,以root用户的身份访问操作文件或执行命令; chmod g+s printid  这样一来,文件在执行阶段具有文件所属组的权限,此时进程的egid为文件所属组的ID。

区分一个函数是“系统函数”还是“库函数”依据:1.是否访问内核数据结构;2.是否访问外部硬件资源。二者有任一个,则为系统函数;二者均无,则为库函数。比如,fork、getpid、getuid和getgid等函数就是系统函数,因为它们需要访问内核的数据结构PCB。

getuid、geteuid、getgid和getegid函数相关推荐

  1. linux_进程类相关学习-fork函数-getpid函数-getppid函数-getuid函数-geteuid函数-getgid函数-getegid函数-进程之间共享数据-进程gdb调试

    接上一篇:linux_环境变量-C语言代码打印环境变量-getenv函数-setenv函数-unsetenv函数 本次来分享进程类相关的学习,主要就是分享一些函数的使用,来,开始上菜: 目录 1.fo ...

  2. linux 编程函数原型与用法

    函数原型以及部分实例应用 --------------------------------------------------------------------------------------- ...

  3. 【Busybox】Busybox源码分析-04 | ash和login程序

    文章目录 一.ash程序入口分析 二.ash_main总结 三.login进程 四.login程序入口分析 五.login_main总结 busybox版本:1.35.0 一.ash程序入口分析 as ...

  4. Linux可加载内核模块(LKM)(转载)

    转载: 漏天剑 文章导航: 为校长杯流尽最后一滴血, Lkm注射, 返回首页 Linux可加载内核模块(LKM) Linux可加载内核模块完全版 --黑客.病毒程序编写者和系统管理员的概念性指南 作者 ...

  5. Unix编程/应用问答中文版(转)

    Unix编程/应用问答中文版 名称 -- Unix编程/应用问答中文版 版本 -- 0.04 ( 2003-10-09 外发版 ) 维护 -- 小四 <scz@nsfocus.com> 主 ...

  6. Linux可装载模块完全指南

    为什么80%的码农都做不了架构师?>>>    written by pragmatic / THC, version 1.0 released 03/1999 译:quack / ...

  7. 【C语言 Linux系统开发 视频课程学习笔记】

      学习的课程在b站:史上最强最细腻的linux嵌入式C语言学习教程[李慧芹老师]   感谢李老师!感谢up主!   本篇博客只是收集一下学习过程中遇到的函数和其他知识点,并不会详细展开.某个函数的具 ...

  8. Linux的capability深入分析(1)【转】

    转自:https://blog.csdn.net/wangpengqi/article/details/9821227 一)概述:1)从2.1版开始,Linux内核有了能力(capability)的概 ...

  9. Linux的capability深入分析(1)

    一)概述: 1)从2.1版开始,Linux内核有了能力(capability)的概念,即它打破了UNIX/LINUX操作系统中超级用户/普通用户的概念,由普通用户也可以做只有超级用户可以完成的工作. ...

最新文章

  1. SAP Query达到select * where 的效果 2011-04-29
  2. WIN-8“内置管理员无法激活此应用”问题
  3. python q切换指定目录_Python小工具:3秒钟将视频转换为音频
  4. linux无法跳转到home,linux No directory, logging in with HOME=/
  5. 二层网络和三层网络的区别
  6. 世界上最伟大的十个公式,看看你懂得几个?
  7. count(1)、count(*)、count(字段)的区别
  8. Oracle DG常用视图与运维护常用操作
  9. MapReduce 与 Database 的乌龙战
  10. 面试被问离职原因,别乱说
  11. php框架tp6自学笔记——pdf文件下载
  12. 5GHz超频教程:技嘉Z390 AORUS MASTER主板+酷睿i9
  13. GWAS计算BLUE值3--LMM考虑残差异质计算BLUE值
  14. IT圈子很小,遭遇人肉搜索后果很严重
  15. java 新手入门电子书_Java基础入门指导(适合所有初学者).pdf
  16. 【毕业设计】基于单片机无线充电的4轴飞行器 -物联网 嵌入式 stm32
  17. fitnesse自动化测试基本介绍
  18. 夺命雷公狗TP下关联查询
  19. 环球科技智库:2017外媒关注的中国十大科技企业
  20. 基于Tire树(字典树)与倒排索引实现文本词频统计工具

热门文章

  1. No identities are available for signing 的解决办法
  2. 笔记本电脑怎么清理灰尘_手机声音越用越小怎么办?一段黑科技音波就能清理扬声器灰尘...
  3. linux转换vcf格式,如何使用awk分割vCard通讯录文件(.vcf)
  4. 怎么把原来的墙拆掉_家装拆除不是简单的砸砸墙,它也是有技术的
  5. mssql php 5.4,PHP5.4如何连接MSSql Server2005
  6. python set |_Python事件类| set()方法与示例
  7. Java RandomAccessFile writeBytes()方法与示例
  8. Java接口程序练习
  9. python虚拟环境管理工具_Python虚拟环境和包管理工具Pipenv的使用详解--看完这一篇就够了...
  10. uva 11995——I Can Guess the Data Structure!