其他

linux下进程权限分析

2016-11-22 raochaoxun CU技术社区

点击上方“蓝字”可以关注我们哦




|本文来自CU技术社区

|作者:raochaoxun



在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知之甚少。本文总结一下linux系统下进程权限问题和现象。


需要强调的是,本文是linux系统下讨论,因为linux和unix有很多不同的地方,并且各个不同的unix系统也有很多不同。


先开门见山的列出本文讨论对象:ruid(实际用户id: real userid)、euid(有效用户用户:effective  userid), suid(保存用户id:saved userid)、fuid(文件系统用户id)。

    

除了上面4个,还涉及到一个位 设置用户id位(set user id bit),,即我们通常所说的处rwx之外那个s标志位。


另外,本文主要讨论userid,groupid规则基本一样,例如rgid, egid, sgid, fgid等,本文就不做组id方面的重复讨论了。

    

首先,查看这几个uid的方法有两种方式:一是ps 命令 (ps -ax -o ruid -o euid -o suid -o fuid -o pid -o fname)列出这几个uid;二是查看status文件,(cat /proc/2495/status  | grep Uid)。


本文创建5个test用户 test1~test5用来做本文中sample讨论使用,代表常见普通权限用户。



上面是我们碰到最常见最多的情况,所以导致大部分技术人员很少关心这个四个uid的区别和含义。让我们继续看看更多场景。



权限出让使用最多的场景是类似apache或mysql程序,启动的时候使用root用户启动,设置一些root用户才能操作的系统配置。创建子进程时候通过setuid降级为nobody用户。


继续看一下s权限位对进程权限的影响




s权限位使用最经典的案例是passwd命令


下面我们看看他们对文件权限的影响,构建一个ruid,euid,和fuid都不同,看看创建出来的文件所有者是哪个uid



五、权限的继承,当使用fork子进程的时候,子进程全部继承父进程四个uid,和父进程uid相同;


当使用exec系列函数时候,会把suid置为euid。



 我知道一种学习

于坚



下载我们APP

Android和IOS均可使用

这里有最新鲜的干货

ITPUB|ChinaUnix|IT168




您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存