centos 中SUID和SGID的分析

本文详细解释了Linux系统中的SUID和SGID权限的概念及其实际应用。通过具体实例展示了这两种特殊权限如何改变程序运行时的有效用户身份及文件创建时的默认用户组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   在看《鸟哥的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/这个文件夹里面创建东西会怎么样呢?我特地实验了一下,发现创建的文件还是和原来一样,这就出现了一种很神奇的情况,某个文件所属的用户和所属的组并没有任何关系。如下图:

CentOS 7 中,文件权限是通过文件的用户、用户组权限标志来控制的。 1. 用户 每个文件都有一个所有者,可以使用 `chown` 命令来更改文件的所有者。例如,将文件 `file.txt` 的所有者更改为 `user1`: ``` chown user1 file.txt ``` 2. 用户组 除了文件所有者外,每个文件还属于一个用户组。可以使用 `chgrp` 命令来更改文件的用户组。例如,将文件 `file.txt` 的用户组更改为 `group1`: ``` chgrp group1 file.txt ``` 3. 权限标志 每个文件都有三组权限标志:文件所有者的权限、文件所属用户组的权限其他用户的权限。可以使用 `chmod` 命令来更改文件的权限标志。例如,将文件 `file.txt` 的权限设置为 `-rwxr-xr--`: ``` chmod 754 file.txt ``` 在上面的例子中,数字 7 表示文件所有者具有读、写执行权限,数字 5 表示文件所属用户组具有读执行权限,数字 4 表示其他用户只有读权限。 4. 特殊权限标志 除了普通权限标志外,还有一些特殊权限标志,如 SUIDSGID 粘滞位。SUID SGID 标志可以设置在可执行文件上,以便在运行时以文件所有者或用户组的身份运行。粘滞位可以设置在目录上,以防止其他用户删除其中的文件。 可以使用 `chmod` 命令来设置特殊权限标志。例如,在目录 `/tmp` 上设置粘滞位: ``` chmod +t /tmp ``` 以上是 CentOS 7 中文件权限的基础知识,更多细节可以参考相关文档资料。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值