【Linux】Linux 中的UID

这篇具有很好参考价值的文章主要介绍了【Linux】Linux 中的UID。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参考:https://www.cnblogs.com/bwangel23/p/4225818.html

Linux中,UID用于标识一个用户(例如alice,bob,root)
Android中,UID用于标识一个应用程序或系统服务

一、Linux 中的UID

1.1 每个进程的三个UID值

每个用户有一个UID。

内核为每个进程维护3个UID标识。这三个UID标识分别是RUID(Real UID,实际用户ID)EUID(Effective UID,有效用户ID)SUID(Saved Set-user-ID,保存的设置用户ID)

  • RUID:我们当前以哪个用户登录,我们运行程序产生进程的RUID就是这个用户的UID。
  • EUID:指当前进程实际以哪个UID来运行。一般情况下EUID等于RUID;但如果进程对应的可执行文件具有SUID权限(也就是rws的s),那么进程的EUID是可执行文件的所有者的UID
  • SUID:EUID的一个副本,与SUID权限有关。

1.2 二进制文件的SUID权限

以passwd这个可执行文件为例。
password文件的权限为:-rwsr-xr-x
passwd的所有者是root,但是其他用户对于passwd也有执行权限,并且passwd自身具有SUID权限(rws的s)。
那么,当非root用户执行passwd这个可执行文件的时候,产生的进程的EUID,就是root用户的UID。换言之,这种情况下,产生的进程,实际以root用户的ID来运行二进制文件。

需要说明的是,SUID权限具有时效性仅在执行该文件的过程中有效

二、setuid、setresuid函数

2.1 setuid函数

函数原型:int setuid(uid_t uid);

在Linux中, setuid(uid)函数的执行步骤为:
(1)如果由Root权限进程(EUID为0的进程)调用,则将进程的RUID,EUID和SUID都设置为uid,返回0
(2)如果由普通权限进程调用,且uid等于RUID或uid等于SUID,则将进程的EUID设置为uid,返回0
(3)如果由普通权限进程调用,且uid不等于RUID或SUID,则设置errno为EPERM,并返回-1(表示执行失败)

上文中,执行password的进程,EUID是password的所有者的UID,也就是root用户的UID,也就是0。所以,属于情况(1)。

su文件同样是-rwsr-xr-x权限。所以,安卓中,普通进程通过Runtime.getRuntime().exec(“su”),发起一个shell进程,去执行su的时候,同样属于情况(1)。

2.2 setresuid函数

参考https://blog.csdn.net/damotiansheng/article/details/39674115

函数原型:int setresuid(uid_t ruid, uid_t euid, uid_t suid);

满足以下条件之一时,setresuid被执行:
①当前进程的euid是root(AID_ROOT)
②三个参数ruid、euid、suid中的每一个,都和当前进程的某个UID值 相等

例如:

  • 如果当前进程的RUID=100,EUID=0,SUID=300
    则setresuid(200,300,100)可以执行,因为原来的euid=0
  • 如果当前进程的RUID=100,EUID=300,SUID=200
    则setresuid(200,300,100)可以执行,因为这三个参数都是当前UID中的某一个;
    但setresuid(100,200,400)不能执行,因为400不等于当前UID中的任意一个。

三、getuid、geteuid函数

getuid返回当前进程的RUID
geteuid返回当前进程的EUID

四、安卓中 app执行su获取root用户权限的过程

参见:https://blog.csdn.net/qq_39441603/article/details/124996277文章来源地址https://www.toymoban.com/news/detail-480165.html

到了这里,关于【Linux】Linux 中的UID的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算与openStack-openStack学习 https://www.bilibili.com/video/BV1Jq4y1M7GC?p=22&spm_id_from=pageDriver

    一.openStack的主要组件 openStack提供硬件的管理能力,不提供硬件,支持不同厂商的硬件环境,将不同的硬件环境放在硬件池里面来统一管理 openStack还提供了认证服务、监测服务和数据库服务三大共享服务来服务上面的三大组件 ,应用程序可以通过API来管理提供的这三大组件和组件

    2023年04月14日
    浏览(40)
  • VMware中的虚拟机Debian10的服务器配置,使主机(win10)能够通过本地域名(如www.xxx.com)访问该服务器

    (可选下载链接: Index of /cdimage/archive (debian.org) ) 这里点击浏览,选择下载好的镜像文件,然后点击下一步 这里自己给虚拟机命名,然后选择好虚拟机存放的路径,接着点击下一步 这里根据需求设置虚拟机最大的占用空间,以及选择存储文件的个数,然后点击下一步 确认

    2024年02月13日
    浏览(41)
  • 微信小程序不在以下 request 合法域名列表中,请参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/n

    出现不在以下 request 合法域名列表中,请参考文档:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html 如果时仅仅提供了http协议接口、暂时没用提供https协议的接口 可以开启[不校验合法域名、TLS版本以及HTTPS证书]的选项 只能在开发和调试使用,项目上线之后要勾

    2024年02月15日
    浏览(45)
  • nginx将xxx.com重定向到www.xxx.com配置

    有时候,我们网站,需要将顶级域名xxx.com统一跳转到二级域名www.xxx.com下。这时候,我们可以通过修改nginx配置达到我们的目的。

    2024年03月23日
    浏览(56)
  • Docker未授权访问漏洞(www.hetianlab.com)

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。 产生原因 如果在docker上配置了远程访问,d

    2024年02月04日
    浏览(56)
  • wwwxxx域名选择(www.xxx.com或者.cn)

    域名就是网站的网址,就跟家庭住址一样,那么域名就是我们网站的地址,我们使用方便记忆的域名(字母/数字+.COM等域名后缀:www.xxx.com)。 按所属机构分 常见后缀形式: COM:商业性的机构/公司/个人,因为COM这个后缀公信度高,所以用得比较多 ORG :非盈利的组织、团体

    2024年02月05日
    浏览(64)
  • 实例35---字符串反转,如将字符串 “www.runoob.com“ 反转为 “moc.boonur.www“。

    本系列为C语言菜鸟100道基础经典例题详解刷题系列。点滴成长,一起逆袭。 实例35—字符串反转( 字符串数组逆序输出 ),如将字符串 “www.runoob.com” 反转为 “moc.boonur.www”。 对c语言的字符串进行反转,将abcdef反转为fedcba的办法有很多,而我所使用的方法是 for循环来将字

    2024年02月04日
    浏览(44)
  • 虚拟机 ping: www.baidu.com:未知的名称或服务

    1、打开ifcfg-ens33文件 2、如下,加上网关和dns就行了,紫色部分,也就是 DNS1=“114.114.114.114” 2.1、 注释: 2.2、网关怎么看,静态IP地址如何确定? 第一步:网关确定,打开虚拟机网络编辑器,找到vmnet8,里面就有个网关,自动获取的: 这个网关,就是我们要填的。 第二部:

    2024年02月06日
    浏览(52)
  • 配置hosts文件,输入某域名(www.XXX.com)时出现自己的页面

    1、以管理员身份运行记事本。 2、打开C:WindowsSystem32driversetc路径下的hosts文件 3、如果页面没有任何文件,点击如图的所有文件即可    4、打开文件,在最下面写上自己的ip和所用的域名即可。 (注意 :如果配置完之后依然没用,可以尝试清除浏览器本地缓存) 原理:    

    2024年02月13日
    浏览(48)
  • Restclient-cpp库介绍和实际应用:爬取www.sohu.com

    Restclient-cpp是一个用C++编写的简单而优雅的RESTful客户端库,它可以方便地发送HTTP请求和处理响应。它基于libcurl和jsoncpp,支持GET, POST, PUT, PATCH, DELETE, HEAD等方法,以及自定义HTTP头部,超时设置,代理服务器等功能。 本文将介绍如何使用Restclient-cpp库来实现一个简单的爬虫程序

    2024年02月07日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包