centos 中SUID和SGID的分析

   在看《鸟哥的Linux私房菜》的过程中,关于SUID和SGID有了自己的一点心得体会,来这里发表一下!


    首先说SUID,这个权限的含义就是当一个用户运行一个程序的时候,如果这个程序有SUID权限,那么这个程序运行时的所属用户不是运行这个程序的用户,而是这个程序的所属用户。举个例子:chfn这个程序,如下图:

这个程序是属于root的,且具有SUID权限,其他用户具有运行权限,如果我用一个普通用户vbird来运行会发生什么情况呢?请看下图:

vbird是一个普通用户,当vbird运行这个程序的时候,我用root去查找系统中关于chfn的进程,会发现这个进程的所有者是root,这就是SUID。


    接下来再讲一下SGID,我个人感觉关于进程的SGID权限和SUID差不多,这里没有什么难点。主要是在于关于文件夹的。如果一个文件夹拥有SGID权限的话,那么其他用户进入到这个文件之后,有效用户组都是这个文件夹的用户组,即创建的文件或者文件夹的用户组都是这个文件夹的用户组。这句话听起来可能比较拗口,接下来举个例子,就很好理解了。

    首先,介绍用户和组,我这里有一个用户michael,其主组也是michael,附属组是一个project。如下图:


michael的主组是michael意味着michael登录后,默认的有效组就是michael,即michael创建一个一个文件或者文件夹,默认都是属于michael组的。

现在,有一个文件夹project,拥有SGID权限,且所属组为project,那么michael在里面创建文件或者文件夹会发生什么情况呢?请看下图:

大家请看,我创建的文件test和文件夹dtest都是属于project组的,而不是属于michael组,且dtest文件夹也拥有SGID的权限。这就是sgid的功能。

    最后,我是有个想法,如果michael的附属组里面不包含project,那么michael在project/这个文件夹里面创建东西会怎么样呢?我特地实验了一下,发现创建的文件还是和原来一样,这就出现了一种很神奇的情况,某个文件所属的用户和所属的组并没有任何关系。如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值