千家信息网

CentOS系统特殊权限有哪些

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"CentOS系统特殊权限有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"CentOS系统特殊权限有哪些"吧!1.什么是特殊权限
千家信息网最后更新 2025年12月02日CentOS系统特殊权限有哪些

这篇文章主要讲解了"CentOS系统特殊权限有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"CentOS系统特殊权限有哪些"吧!

1.什么是特殊权限?

我们知道权限有r,w,x。其实除了这三个,还有特殊权限。比如:

[root@localhost ~]# ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd

可以发现权限位,有个s。特殊权限有如下3种:

SUID

SGID

STICKY

2.关于suid

我们知道linux有一个进程安全模型的概念,比如Tom执行passwd来进行修改密码:

第一,注意到passwd的权限为:

[hadoop@localhost ~]$ ls -l `which passwd`

-rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd

第二,注意到Tom不是root用户,也不属于root组。

我们先不考虑什么特殊权限s。很显然,此时Tom只能以other(r-x)来运行passwd。Tom可以发起一个进程,这个进程是passwd,想修改自己的密码。

第三,用户Tom执行完passwd修改密码,其实就是保存至/etc/shadow中,下面我们看看/etc/shadow文件的权限情况。

[hadoop@localhost ~]$ ls -l /etc/shadow

-r-------- 1 root root 2713 Jun 13 16:34 /etc/shadow

[hadoop@localhost ~]$

那个属于Tom的修改密码的进程应该要去修改/etc/shadow文件,但是根据上面的/etc/shadow的权限,除了root用户外,谁都不可以修改的!也就是说,根据进程安全模型,普通用户根本无法修改密码!但事实上,是可以修改的。原因就在于那个特殊权限s。

也就是说,suid表示运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者。也就是说普通用户去执行passwd修改密码,其实是发起了一个进程,这个进程的属主是root用户,那么很显然就可以修改shadow这个影子文件了。

3.关于sgid

根据suid的理解,可知sgid表示运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者的基本组。可以举例分析:

第一:root用户创建了一个项目目录

[root@localhost /]#

[root@localhost /]# ls -ld /project/cma

drwxrwxr-x 2 root develop 4096 Jun 14 22:14 /project/cma

第二:项目组成员java01,java02,...均属于develop组(他们的附加组),也就是说他们对/project/cma具有rwx权限。

[java02@localhost cma]$ ls -l

total 8

-rw-rw-r-- 1 java01 java01 0 Jun 14 22:24 01.java

-rw-rw-r-- 1 java02 java02 0 Jun 14 22:25 02.java

上面看到他们可以在/project/cma中创建文件,根据以前的理论:【谁创建的文件,文件的属主就是谁,属组就是他的基本组】,上面的没有问题。但是,我们希望这些项目组成员之间可以相互编辑其他人的文件,该如何做呢?

第三:由于项目组成员java02,并不属于java01的私有组,显然java02只对01.java具有r--权限,不可以编辑。此时我们可以使用sgid,来改变默认的这种行为~

[root@localhost cma]# pwd

/project/cma

[root@localhost cma]# chmod -R g+s /project/cma

[root@localhost cma]# ls -ld

drwxrwsr-x 2 root develop 4096 Jun 14 22:25 .

[root@localhost cma]#

注意了,出现了特殊权限位s,但是有时候可能会显示S。【如果是s说明这个权限位上以前是具有x权限的】

第四:利用sgid后,以后我们的项目组成员便可以在此目录下编辑其他成员的文件了。

[java02@localhost cma]$ ls -l

total 16

-rw-rwSr-- 1 java01 java01 0 Jun 14 22:24 01.java

-rw-rw-r-- 1 java01 develop 0 Jun 14 22:33 01.txt

-rw-rwSr-- 1 java02 java02 0 Jun 14 22:25 02.java

-rw-rw-r-- 1 java02 develop 0 Jun 14 22:33 02.txt

[java02@localhost cma]$

也就是说利用sgid可以帮我们达到这样的目的:

在目录下创建的文件的属组不在是用户的基本组,而是目录的属组。

4.关于sticky

此时此刻,我们的项目组成员已经可以相互编辑/project/cma下面的文件了,但是有个要求:我们希望用户只能删除自己的文件,而不可以删除别人的文件。这就要使用sticky了。

[root@localhost cma]# chmod -R o+t /project/cma

[java01@localhost cma]$ id

uid=5016(java01) gid=5016(java01) groups=5016(java01),5018(develop) context=root:system_r:unconfined_t:SystemLow-SystemHigh

[java01@localhost cma]$ rm 02.txt

rm: cannot remove `02.txt': Operation not permitted

5.串联

还记得umask吗,umask其实就是一个XYZW,四位数,其中X表示的就是suid/sgid/striky。

chmod xyzw file,其实同理。

000 nothing

001 only striky

010 only sgid

100 only suid

......

感谢各位的阅读,以上就是"CentOS系统特殊权限有哪些"的内容了,经过本文的学习后,相信大家对CentOS系统特殊权限有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

权限 文件 特殊 用户 进程 密码 就是 项目 也就是 也就是说 组成员 系统 目录 程序 面的 学习 运行 普通 安全 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发人员在各个阶段 摄像镜头数据库 4口万兆网卡服务器主板 网络安全信息等级测评 全国默哀关闭游戏服务器 王者荣耀安卓微信区服务器名称 服务器可加入ip数是什么意思 软件开发道路 三级网络技术选择题库 sql建网站数据库 湖南网络技术学院全国排名 软件开发 业务系统 创业 数据库还原操作系统返回错误5 网络技术总监具备哪些技能 外文数据库中布尔逻辑算符 手机棋牌软件开发贵吗 软件开发方向论文 抚州个人服务器找哪家 一个域名可以绑两台服务器吗 浦东新区软件开发技术服务优势 上海熙邻网络技术 手机软件开发怎么判断好坏 罗布乐思12月8日停止服务器 啥时候上架 云服务器带数据库吗 西安爱艺网络技术有限公司 我的世界1.8.9pvp服务器ip大全 惠普服务器怎么开启虚拟化 五年网络安全手抄报 监控机房服务器是什么意思 三级网络技术NAT地址转换
0