Linux系统的安全性得益于其进程权限和文件权限的控制机制。今天抽空梳理下Linux下的进程权限控制相关的文件权限涉及一点。首先明确四个名词:真实用户ID(real ID)、有效用户ID(effective ID)、保存用户ID(Saved ID)、文件系统用户ID(File ID)。后面的特性同样适用组。

  • 真实用户ID(real ID)

  是指启动进程的用户ID,进程如果拥有root权限启动以后就可以调用setuid(newid)系统调用修改。修改之后四个ID的值都会变为newid,程序刚开始运行第一行命令时四个值都是启动这个进程的用户ID。

  • 有效用户ID(effective ID)

  指正在运行(强调他现在属于谁)进程的用户ID,看着让人疑惑啊,这不就是真实用户ID吗?其实不是,因为程序在运行过程中可以修改当前正在运行自己的人(为真实用户ID或着保存用户ID),所以启动进程的用户是真实ID但是运行进程的是有效ID。最初他俩是相同的,进程运行期间的权限认证使用的就是有效用户ID。

  • 保存用户ID(Saved ID)

  保存进程的最初有效用户ID,所以一般情况下一个程序如果运行期间不修改自己的ID则,前面这个三个ID应该是相同的

  • 文件系统用户ID(File ID)

  文件系统ID。他在Linux下的作用主要是体现在进程创建文件后的新文件的权限处理时使用的用户。Uunix上使用的是有效用户ID。

程序在运行过程是可以修改自己的有效用户ID从而修改自己的权限的,不过一般情况下应用程序是无法增加自己的权限的,所以修改进程有效用户ID我理解这个机制是为了在合适的时候减小进程权限而存在的,比如以root作为真实ID,但是以普通用户状态运行,避免程序越线操作。Linux下修改程序用户ID的系统调用主要有四个两类。

  • 修改进程ID int seuid(uid_t uid)

这个系统调用的执行效果取决与当前调用进程的有效用户ID,如果是root则它将修改所有上面的四个ID(其实是五个还有一个suid),所以相当于他执行了这一个系统调用后就是放弃了自己的root权限,相反此时如果进程的有效用户ID是一个普通的用户,则他将只会修改有效用户ID和文件系统用户ID行为退化的和下面的系统调用用法相同。

  • 修改进程有效用户ID int seteuid(uid_t uid)

正如前面所说的一样,这个系统调用只会修改进程的有效用户ID和文件系统用户ID,但是这个函数的操作可以讲有效ID设置成的新ID值只能是真实用户ID 和保存用户ID其中之一。

总结就是:  

非root用户是无法出让权限给其它用户,只有root用户才能出让。非root用户权限本来就只有他自己的权限,所以其他用户他可能都是不可见的。setuid和seteuid是有区别的,setuid是永久的放弃root用户权限,转让给非root用户后,无法再restore到root用户,seteuid是临时放弃root用户权限,可以通过seteuid(0),restore到root权限。

最后还有就是suid,这是设置用户ID,他是存在与文件权限位rwx中的,如果一个可执行文件通过chmod设置了s位则,任何用户对这个文件有执行权限的用户执行了这个可执行文件,则其有效用户ID就是这个文件设置的s位的用户ID,常见用户是给文件属主用户设置这一位通过chmod u+s filename  命令。例如一个可执行文件的属主是user1 并且设置了属主设置权限位s,则user2去执行这个可执行文件时这个进程的 真实用户ID  有效用户ID 保存用户ID分别是  user2 user1 user1 。此外一个进程权限的继承,当使用 fork 子进程的时候,子进程全部继承父进程四个 uid,和父进程 uid 相同当使用exec系列函数时候,会把suid(文件S标志位)置为euid。这就是Linux下的进程权限控制的相关内容,还有一个疑惑就是既然有效用户ID常常和文件系统ID一起被修改,那么为什么需要他呢,还是我理解的有问题,如果有明白其中原由的大牛告知一下。

参考:https://www.jb51.net/article/98188.htm

Linux的进程权限控制的更多相关文章

  1. <实训|第九天>掌握linux中普通的权限控制和三种特殊的权限(sst),做合格的运维工程师

    linux中,权限的学习是必不可少的,不论是作为一名运维工程师或者是单一的管理者,学习好linux中的权限控制,你就可以保护好自己的隐私同时规划好你所管理的一切. 权限的学习是很多的,不要认为自己已经 ...

  2. linux下的权限控制

    终于还是要弄服务器了,这是多年前用fedora的时候整理的,也贴出来,顺便也再复习一下. 先来了解一下文件属性,在shell环境里输入:ls -l 可以查看当前目录文件.如:drwxr-xr-x. 1 ...

  3. linux下进程权限分析

    转自http://blog.chinaunix.net/uid-27105712-id-3349522.html 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知 ...

  4. <实训|第十三天>linux中ACL权限控制以及磁盘配额,附编译属于自己的linux内核

    [root@localhost~]#序言 首先讲讲昨天关于缩容失败,开不机的解决方法:ACL权限也算是一个很重要的知识点,不难,但是很实用:磁盘配额一般不需要自己弄,但是要懂得原理.剩下的就是编译属于 ...

  5. Linux系统——ACL权限控制及特殊权限

    ACL权限控制 ACL(access control list),可以提供除属主.属组.其他人的rwx权限之外的细节权限设定 ACL的权限控制 (1)User 使用者 (2)Group 群组 (3)M ...

  6. Linux下ACL权限控制以及用sudo设置用户对命令的执行权限

    ACL权限分配 1.setfacl命令设置文件权限 setfacl -m u:user1:rw root.txt setfacl -m u:user2:rwx root.txt 2.getfacl命令 ...

  7. linux下ftp权限控制

    需求背景: 1.创建2个账号给联调的系统使用读取我方服务器提供的文件信息.只允许看到限定的目录,对目录下的文件只有只读权限,禁止shell登录. 2.创建一个内部账号提供文件信息,只允许看到限定的目录 ...

  8. Linux - 文件ACL权限控制

    getfacl 1.test # 查看文件ACL权限 setfacl -R -m u:xuesong:rw- 1.test # 对文件增加用户的读写权限 -R 递归

  9. Linux常用文件权限控制命令

    一,查看文件属主属组ls -l [root@localhost app]# ls -l total 302832 drwxr-xr-x. 4 lhc lhc 4096 Nov 18 16:05 apa ...

随机推荐

  1. 打包遇到错误Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test

    引自:https://blog.csdn.net/xiexiangyan/article/details/107936774 遇到的问题 有一个maven项目,我clone一下最新的代码.准备打包(m ...

  2. 华为三层交换机限制vlan段的指定端口

    屏蔽vlan 120这个段的ip的所有2333端口 [NTT_3L]int Vlanif 120 [NTT_3L-Vlanif120]dis this # interface Vlanif120 ip ...

  3. OAuth2.0与前端无感知token刷新实现

    前言 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛的应用.Facebook.Twitter和Google等各种在线服务都提供了基于OAuth规范的认证机制. ...

  4. Elasticsearch从0到千万级数据查询实践(非转载)

    1.es简介 1.1 起源 https://www.elastic.co/cn/what-is/elasticsearch,es的起源,是因为程序员Shay Banon在使用Apache Lucene ...

  5. (四)Springboot以jar包方式启动、关闭、重启脚本

    Springboot以jar包方式启动.关闭.重启脚本 1.启动 2.关闭 3.重启 4.脚本授权 SpringBoot: nohup java -jar zlkj-data-server-1.0-S ...

  6. 使用kubekey安装kubesphere

    下载 KubeKey KubeKey 是新一代 Kubernetes 和 KubeSphere 安装器,可帮助您以简单.快速.灵活的方式安装 Kubernetes 和 KubeSphere. expo ...

  7. 静态链表 Static Link List

    Static Link List 静态链表 其中上图来自http://www.cnblogs.com/rookiefly/p/3447982.html  参考: http://www.cnblogs. ...

  8. 悬线法——有套路的DP

    例题 P1169 [ZJOI2007]棋盘制作 题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8×88 \times ...

  9. codeforces 292E. Copying Data

    We often have to copy large volumes of information. Such operation can take up many computer resourc ...

  10. Codeforces Round #687 (Div. 2, based on Technocup 2021 Elimination Round 2) A. Prison Break

    题意:有一张\(n\)x\(m\)的图,图中每个点都关押着罪犯,在坐标\((r,c)\)处有一个出口,每名罪犯每秒可以可以像上下最有移动一个单位或者不动,问所有罪犯能够逃离监狱的最少时间. 题解:直接 ...