首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Linux Kernel 4.2中获取当前进程的UID和EUID?

在Linux Kernel 4.2中,可以使用以下方法获取当前进程的UID和EUID:

  1. 使用getuid()函数获取当前进程的实际用户ID(UID)。实际用户ID是指进程的真实所有者的ID。
  2. 使用geteuid()函数获取当前进程的有效用户ID(EUID)。有效用户ID是指用于权限检查的ID,通常是实际用户ID,但在特定情况下可以改变。

以下是对这两个函数的详细说明:

  1. getuid()函数:
    • 概念:getuid()函数用于获取当前进程的实际用户ID(UID)。
    • 分类:getuid()函数属于Linux系统调用函数。
    • 优势:通过getuid()函数,可以获取进程的真实所有者的ID。
    • 应用场景:常用于需要获取当前进程的用户身份信息的应用程序。
    • 腾讯云相关产品:腾讯云提供了云服务器(CVM)产品,可用于部署和运行Linux Kernel 4.2及以上版本的操作系统。您可以在腾讯云官网了解更多关于云服务器的信息:腾讯云云服务器
  • geteuid()函数:
    • 概念:geteuid()函数用于获取当前进程的有效用户ID(EUID)。
    • 分类:geteuid()函数属于Linux系统调用函数。
    • 优势:通过geteuid()函数,可以获取用于权限检查的用户ID,通常是实际用户ID。
    • 应用场景:常用于需要进行权限检查的应用程序,以确定当前进程是否具有特定权限。
    • 腾讯云相关产品:腾讯云提供了云服务器(CVM)产品,可用于部署和运行Linux Kernel 4.2及以上版本的操作系统。您可以在腾讯云官网了解更多关于云服务器的信息:腾讯云云服务器

请注意,以上答案仅针对Linux Kernel 4.2版本中获取当前进程的UID和EUID的方法,不涉及其他云计算品牌商。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

linux和docker的capabilities介绍

验证环境:centos7 x86/64 内核版本4.19.9 在linux 2.2版本之前,当内核对进程进行权限验证的时候,可以将进程划分为两类:privileged(UID=0)和unprivilege...其中privileged的进程拥有所有内核权限,而unprivileged则根据如可执行文件的权限(effective UID, effective GID,supplementary group等)进行判断...同时也可以看到当前进程的RUDI=EUID=10001,即创建userTest2时的UID;RGID=EGID=20001,为创建newGrp3时的GID [userTest2@localhost userTest1.../test可以看到如下信息,当前进程(执行execev之前)的capabilities如下,由于进程此时由于getchar()中断,使用上述方式查看当前进程的信息如下(虽然该进程的所有uid为0,但其并不是一个真正系统级别的...,但线程是否能调用另外的程序,需要看当前线程的EUID是否与文件的EUID对应,且能获取该文件的所有capabilities(如果文件设置了capabilities) execve与fork不一样,它并不会创建一个子进程

1.6K20
  • 带着问题看源码 —— setreuid 何时更新 saved-set-uid (SUID)

    前言 在写《[apue] 进程控制那些事儿》/"进程创建"/"更改进程用户 ID 和组 ID"一节时,发现 setreuid 更新实际用户 ID (RUID) 或有效用户 ID (EUID) 时,保存的设置用户...为了解答这个问题,找来系统对应版本的 linux 源码查看: > uname -a Linux goodcitizen.bcc-gzhxy.baidu.com 3.10.0-1160.80.1.el7....3 个权限ID:RUID / EUID / SUID,其中用到的 getresuid 仅 Linux 支持,能展示用户当前的 SUID 值 ....= old.uid 条件 2 触发,所以 SUID 被复制为新 EUID:bar 第 5 行:同时设置 ruid 和 euid 为 foo,此时 ruid !...(表中高亮字体):进程 set-user-id 为 root 且以普通用户身份启动 setreuid(-1, foo),从 SUID 不变到现在 SUID 跟随 EUID 改变,这导致整个进程变为普通进程失去重新转变为特权进程的机会

    14510

    linux系统编程之进程(一):进程基本概述

    在Linux下,栈是高地址往低地址增长的。 三、进程与程序 进程是动态的,程序是静态的。 进程的生命周期是相对短暂的,而程序是永久的。 进程数据结构PCB。...进程控制信息 进程当前状态 进程优先级 程序开始地址 各种计时信息 通信信息 资源信息 占用内存大小及管理用数据结构指针 交换区相关信息 I/O设备号、缓冲、设备相关的数结构...八、进程的销毁 进程终止时操作系统做以下工作: 关闭软中断:因为进程即将终止而不再处理任何信号; 回收资源:释放进程分配的所有资源,如关闭所有已打开文件,释放进程相应的数据结构等; 写记帐信息:将进程在运行过程中所产生的记帐数据...对于setuid(uid)行为是这样的: 如果是超级用户进程的话,那么ruid=uid,euid=uid,saved_id=uid....,只不过超级用户进程调用seteuid(uid)只是修改euid=uid.

    1.6K110

    分享两个sudo token的使用技巧

    实际上,sudo会在/var/run/sudo/ts/[username]目录中为每一位Linux用户创建一个单独的文件,这种文件中包含了身份认证成功与失败的相关信息。...=0(root) 实现要求 1、 完全启用Ptrace(/proc/sys/kernel/yama/ptrace_scope == 0); 2、 当前用户必须开启一个拥有有效sudo令牌并且相同uid...的活动进程; 注:默认密码的超时时间为15分钟,如果你在15分钟内使用sudo两次,系统就不会要求你再输入用户的sudo密码了。...工作机制 项目目录中的Exploit.sh会向当前用户的所有进程注入Shell代码,并使用它们的sudo令牌来验证我们自己的sudo口令。仅需三行Shell代码,一切皆有可能。...使用样例 假设,你拿到了一个RCE,而且没有用户密码,但目标用户使用了sudo,那么你就可以通过窃取他的sudo令牌来实现提权啦! 如何在实验环境中模拟?

    66430

    运维人必收藏的最全Linux服务器程序规范

    2.3关闭日志功能: 02 用户信息 1.UID, EUID, GID, EGID 用户信息对于服务器安全很重要,大多说服务器以root启动, 非root运行 基础知识: 一个进程拥有两个用户ID, UID...root, 有效用户为root的进程称为特权进程,EGID与EUID类似,下面演示uid, euid区别: 将生成的可执行文件,所有者设置为root,并设置该文件set-user-id标志,然后运行。...从测试输出结果看,进程的uid是启动程序的用户id, 而euid是root。...2.切换用户 03 进程间关系 1.进程组: Linux下每一个进程都属于一个进程组,因此他们除了pid之外,还有进程组ID(PGID)。我们用如下函数获取指定进程组PGID....如下表 05 改变工作目录和根目录 有些服务器程序好需要改变工作目录和根目录(web /var/www) 获取当前进程工作目录和改变进程的工作目录的函数: buf参数指向的内存用于存储当前工作目录的绝对路径

    1.2K00

    史上最全Linux服务器程序规范

    UID, EUID, EUID存在的目的是为了方便资源的访问, 它使得运行程序的用户拥有该程序的有效用户权限,比如,su用来更改账户信息,但修改账户时su程序的所有者是root,在普通用户运行su程序时...,其有效用户就是该程序的所有者root, 有效用户为root的进程称为特权进程,EGID与EUID类似,下面演示uid, euid区别: 将生成的可执行文件,所有者设置为root,并设置该文件set-user-id...从测试输出结果看,进程的uid是启动程序的用户id, 而euid是root。...2.切换用户 03 进程间关系 1.进程组: Linux下每一个进程都属于一个进程组,因此他们除了pid之外,还有进程组ID(PGID)。我们用如下函数获取指定进程组PGID....如下表 05 改变工作目录和根目录 有些服务器程序好需要改变工作目录和根目录(web /var/www) 获取当前进程工作目录和改变进程的工作目录的函数: buf参数指向的内存用于存储当前工作目录的绝对路径

    1.9K60

    linux用户用户组与ACL

    设立FSUID是为了允许程序(如NFS服务器)在不需获取向给定UID账户发送信号的情况下以给定UID的权限来限定自己的文件系统权限。...如下图所示: 文件的所有组和所有者依然与进程的EUID和EGID指定,而非RUID和RGID。 父子进程# 子进程继承了父进程所有的各种UID和GID。...回到顶部 进程UID与文件权限类型的匹配# 根据前文我们已经知道,对文件的访问和创建等操作需要检查的都是EUID,而不是RUID。...我们在前文中提过,权限匹配是通过EUID来实现的。对于非Set-UID程序而言,进程的EUID是和RUID一致的,当它被一个用户ID为5000的用户运行时,RUID和EUID都是5000。...而当执行一个Set-UID程序时,RUID和EUID的值是不一样的,RUID的值取决于执行该程序的用户ID,而EUID则取决于Set-UID程序文件的所有者。

    4.5K40

    Linux内核源代码情景分析-访问权限与文件安全性

    在Linux内核源代码情景分析-从路径名到目标节点,一文中path_walk代码中,err = permission(inode, MAY_EXEC)当前进程是否可以访问这个节点,代码如下: int...)//如果当前进程的fsuid和inode结构的i_uid相等,那么应该比较mode中S_IRUSR、S_IWUSR、S_IXUSR位 mode >>= 6; else if (in_group_p(inode...->i_gid))//如果当前进程的fsgid和inode结构的i_gid相等,那么应该比较mode中S_IRGRP、S_IWGRP、S_IXGRP位 mode >>= 3; if (((mode &...mask & S_IRWXO) == mask) || capable(CAP_DAC_OVERRIDE))//mask相当于要求,mode是现有的当前用户可以访问的权限,如果相等就返回0。...假如不相等,如果当前进程得到了授权,允许其CAP_DAC_OVERRIDE,即可以凌驾于文件系统的访问权限控制机制DAC之上。

    2.7K60

    进程控制那些事儿

    exec exec 函数族并不创建新的进程,只是用一个全新的程序替换了当前进程的正文、数据、堆和栈段,所以调用前后进程 ID 并不改变。...虽然不清楚 Linux 底层是如何处理的,但是大胆假设一下,这里的逻辑应该和 RUID 相关:当以 root 身份启动时,RUID = EUID = 0;而以 set-uid root 身份启动时,RUID...最终结论,mac 上的 setuid 函数族表现与 linux 完全一致,特别是在 set-uid root 获取的超级用户权限时的一些表现,可以明确的一点就是这些异常 case 并不是 Linux 独有的...Linux/Unix分配进程ID的方法以及源代码实现 [2]. Linux下如何在进程中获取虚拟地址对应的物理地址 [3]. fork() 和 Solaris 线程的特殊问题 [4]....Linux Clone函数 [5]. 浅谈linux下进程最大数、最大线程数、进程打开的文件数 [6]. 在 Linux 上以树状查看文件和进程 [7]. time命令busybox源码 [8].

    40010

    Linux Kernel运行时安全检测之LKRG-实践篇

    Linux Kernel运行时安全检测之LKRG-原理篇可以看到,LKRG可以对正在运行的Linux内核进行检测,并希望能够及时响应对正在运行的进程用户id等凭证未经授权的修改(完整性检查)。...因此LKRG还会跟踪每个进程的一系列不同属性,并维护自己的任务列表,用于验证内核的列表。如果两个进程发生分歧,则终止受影响的进程,目的是在被漏洞利用差异之前进行防御。...Linux内核将信息包存储在结构sk_buff (socket缓冲区)中,所有网络层都使用该结构存储信息包的头部、关于用户数据的信息(负载)和其他内部信息。...p_set_uid(&p_where->euid, p_get_uid(&p_from->euid)); p_set_gid(&p_where->egid, p_get_gid(&p_from->...EUID!

    72620

    从 0 开始学 Linux 内核之 android 内核栈溢出 ROP 利用

    本篇开始学Linux kernel pwn了,而内核能搞的也就是提权,而提权比较多人搞的就是x86和arm指令集的Linux系统提权了,arm指令集的基本都是安卓root和iOS越狱,而mips指令集的几乎没啥人在搞...,R3 从内核态切换回用户态(详情自己百度这句指令和CPSR寄存器) 切换回用户态后,当前程序的权限已经变为root,这时候就可以执行/bin/sh 再继续深入研究,就涉及到内核的三个结构体: $ cat...每个进程都有一个单独thread_info结构体,我们来看看内核是怎么获取到每个进程的thread_info结构体的信息的: #define THREAD_SIZE 8192 ....,内核的栈是有大小限制的,在arm32中栈的大小是0x2000,而thread_info的信息储存在栈的最底部 所以,如果我们能获取到当前进程在内核中运行时的其中一个栈地址,我们就能找到thread_info...把uid和gid的十六进制转换成十进制,发现就是当前进程的权限 使用ROP绕过PXN来进行android提权 既然我们已经知道了怎么修改权限,那么接下来就研究一下如何利用漏洞来提权,因为是研究利用方式,

    1.5K30

    Android进阶:Binder那么弱怎么面大厂?

    获取系统服务前需要了解ServiceManager的启动过程,这样更有助于理解系统服务的注册过程和获取过程。...Intel X86架构的CPU提供了0~3共4个特权级,特权级的数字越小,权限越高,Linux操作系统中主要采用了0和3两个特权级,分别对应的是内核态与用户态。...5处判断当前进程的有效用户ID是否等于binder_context_mgr_uid,如果不等于binder_context_mgr_uid就goto到err标签。...如果不满足注释4处的条件,说明此前没有进程注册Binder机制的上下文管理者,这时就会在注释6处将当前进程的有效用户ID赋值给全局变量binder_context_mgr_uid,另外还会在注释7处调用...如果没有新的请求,当前线程就会在Binder驱动中睡眠,等待新的进程间请求。 由于binder_write函数的调用链中涉及了内核空间和用户空间的交互,因此这里着重讲解这部分内容,代码如下所示。

    59850

    从 0 开始学 Linux 内核之 android 内核栈溢出 ROP 利用

    本篇开始学Linux kernel pwn了,而内核能搞的也就是提权,而提权比较多人搞的就是x86和arm指令集的Linux系统提权了,arm指令集的基本都是安卓root和iOS越狱,而mips指令集的几乎没啥人在搞...CPSR_c,R3 从内核态切换回用户态(详情自己百度这句指令和CPSR寄存器) 切换回用户态后,当前程序的权限已经变为root,这时候就可以执行/bin/sh 再继续深入研究,就涉及到内核的三个结构体...每个进程都有一个单独thread_info结构体,我们来看看内核是怎么获取到每个进程的thread_info结构体的信息的: #define THREAD_SIZE 8192 ....,内核的栈是有大小限制的,在arm32中栈的大小是0x2000,而thread_info的信息储存在栈的最底部 所以,如果我们能获取到当前进程在内核中运行时的其中一个栈地址,我们就能找到thread_info...,发现就是当前进程的权限 使用ROP绕过PXN来进行android提权 既然我们已经知道了怎么修改权限,那么接下来就研究一下如何利用漏洞来提权,因为是研究利用方式,所以自己造了一个最基础的栈溢出 int

    1.6K00

    Unix编程应用问答中文版 ---6.etcsystem可调资源限制

    /etc/system可调资源限制 6.1 Solaris下如何限制每个用户可拥有的最大进程数 6.2 如何配置系统使之支持更多的伪终端 6.3 如何增加每个进程可打开文件句柄数 6.4 6.5 做了setuid...Solaris 7下select()可以使用最多达65536的文件句柄,64-bit应用程序缺省情况如 此。如果是32-bit应用程序,需要指定给FD_SETSIZE一个更大的值,重新编译。...( 500 ) ); printf( "Current uid = %d euid = %d\n", ( int )getuid(), ( int )geteuid() ); creat( "/tmp/.../suidtest Current uid = 0 euid = 0 Result of seteuid( 500 ) = 0 Current uid = 0 euid = 500 Result of...你可以用sysdef获取一些缺省值,还可 以参看/usr/include/sys/msg.h头文件了解更多信息。

    57230

    细说Containerd CVE-2020–15257

    Containerd在宿主机中管理容器生命周期,如容器镜像的传输和存储、容器的执行和管理、存储和网络等。...提权条件 如果不受信任的用户在平台上无法创建主机网络模式(hostnetwork)的容器,或者容器内的进程是以非root用户(UID 0)运行,则不会触发该漏洞,具体满足以下多个条件: 容器使用主机网络...hostnetwork部署,此时容器和主机共享网络命名空间; 容器使用root用户(即UID 0); containerd版本在 <=1.3.7 漏洞确认 对于在易受攻击的系统上运行容器的用户,可以通过禁止主机网络模式...containerd作为守护进程,其对外暴露用于容器生命周期管理(如容器运行管理、镜像管理等)的gRPC接口。...containerd-shim使用标准的Unix域套接字功能来验证传入的连接是否具有与其相同的UID和EUID(通常为UID:0和EUID:0)。

    1.4K20

    docker 非root用户修改mount到容器的文件出现“Operation not permitted

    id都是 65534 ,该UID被称为unmapped user id,定义在/proc/sys/kernel/overflowuid中,是默认的UID(GID)。...user namespace,以系统root用户执行操作 当程序执行对文件(目录)的操作时,其进程的EUID必须与文件(目录)的EUID保持一致,上述的test.sh是由root namespace的root...查看容器init进程的信息,如下,其在root namespace中的EUID为231072,因此无法操作root namespace中EUID为0的文件,使用上述解决方法将其配置为相同的值就可以解决问题...下文参见capabilities,意思是说当一个进程访问文件的时候,进程的uid和gid会映射到初始的user namespace,来验证该程序是否有权限操作该文件;当一个程序获取到文件的uid和gid...,文件的uid和gid会映射到程序所在的user namespace。

    5.2K20
    领券