linux特殊权限!!

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。

[TOC]

注意:本章内容了解即可

第1章 特殊权限概述

1.什么是特殊权限

上节课我们详细讲解了Linux系统9位基本权限位,但是通过查看一些系统关键的文件可以发现上节课没有见过的权限字符,比如/usr/bin/passwd文件

[root@linux ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

可以发现,本该出现在x的位置上出现了从来没有见过的s!这是什么权限?其实这就是传说中的特殊权限suid。
事实上除了我们已经学过的基本9位权限之外,实际上Linux权限位还有额外的3位权限位,总共是12位权限位。
他们分别是:

suid (setuid)
sgid (setgid)
sbit (sticky)

2.特殊权限位对比说明表

类别 suid sgid sticky
字符表示 S S T
占据位置 基本权限位x 基本权限位x 基本权限位x
基本权限位有x s s t
数字表示 4 2 1
八进制表示 4000 2000 1000
生效对象 针对用户位 针对用户组 其他用户

第2章 特殊权限suid

1.什么是suid特殊权限

suid(setuid)位通过S字符标识,存在于基本权限的用户权限位的x权限对应的位置。
如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识,如果没有x权限,就用大写的S表示。
suid的s对应的数字权限为4,完整权限用八进制数4000表示。
suid位也是通过chmod命令进行设置的,可以利用字符权限以及数字权限来实现.

示例代码如下:

[root@linux ~]# touch test.txt
[root@linux ~]# ls -l test.txt 
-rw-r--r-- 1 root root 31 3月  30 17:20 test.txt
[root@linux ~]# chmod u+s test.txt         #在用户位增加suid权限
[root@linux ~]# ls -l test.txt      
-rwSr--r-- 1 root root 31 3月  30 17:20 test.txt        #权限位为S,下面截图可以看到文件名背景是红色的

效果如下:

image-20210330172041735

2.为什么需要suid特殊权限

在Linux系统中,有时执行某个命令(例如普通用户使用passwd修改自身账号密码)时,需要对另一个文件(/etc/shadow)进行操作,而执行passwd修改的文件/etc/shadow又是普通用户没有权限进行操作的。

例如,修改用户密码的命令passwd,该命令文件的所有者和用户组都是root,但是/etc/shadow文件的权限极低,不允许任何普通用户及属主用户访问,具体信息如下:

[root@linux ~]# ls -l /etc/shadow
---------- 1 root root 1472 3月  26 18:34 /etc/shadow

[root@linux ~]# ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

这样的权限,对于普通用户是没有办法更改的,但是系统还需要对普通用户开放自己更改自身账号密码的功能,因此就必须要让普通 用户有权限修改shadow文件,这时就可以通过对passwd命令设置suid 位来解决。

3.suid的应用场景

简单地说: suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有与root管理员一样的身份和权限(默认情况)。

以/etc/shadow文件举例:
据基本权限的知识,oldboy用户无法修改shadow文件,但是因为passwd具有suid权限。因此,当oldboy用户执行passwd时,就可以取得root管理员的身份和权限(实际上是获取passwd对应用户的身份),所以就可以修改原本oldboy没权限修改的/etc/shadow了(修改过程中是以root身份操作的,这就是suid的作用)。

聪明的同学就想到了,那是否意味着普通用户就可以使用passwd命令修改任何账户的密码了呢?
其实不然,Linux系统已经考虑到这种情况了,所以普通用户的passwd命令只能修改自己的密码,不能修改其他用户的密码。

效果如下所示:

[root@linux ~]# su - oldya
上一次登录:一 3月 29 20:40:35 CST 2021pts/0 上
[oldya@linux ~]$ passwd root
passwd:只有根用户才能指定用户名。    #普通用户修改其他用户密码会提示passwd命令只有根用户才能指定用户名

3.suid核心知识

1.suid的功能是是针对二进制命令或程序的,不能用在Shell等类似脚本文件上。
2.用户或属主对应的前三位权限的x位上,如果有s(S)则表示具备suid权限。
3.suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有与命令对应属主(一般为root管理员)一样的身份和权限(默认)。
4.二进制命令程序需要具有可执行权限x配合才能进行相关操作。
5.suid对应的身份和权限仅在程序命令的执行过程中才有效。
6.suid是一把双刃剑,是一个比较危险的功能,对系统安全存在一定的威胁,企业里用户授权可以使用sudo等替代sgid功能。
7.在进行安全优化时,系统中默认设置了suid权限的命令要取消掉。

4.suid配置案例

如果没有配置sudo,普通用户是不能删除其他用户的文件的,演示如下:

[root@linux ~]# touch /opt/root.txt
[root@linux ~]# ll /opt/root.txt 
-rw-r--r-- 1 root root 0 3月  30 17:52 /opt/root.txt
[root@linux ~]# su - oldya
[oldya@linux ~]$ rm -rf /opt/root.txt 
rm: 无法删除"/opt/root.txt": 权限不够

下面我们使用root账户给rm命令授权suid权限,步骤如下:

[root@linux ~]# chmod u+s /bin/rm
[root@linux ~]# ll /bin/rm
-rwsr-xr-x. 1 root root 62952 10月 31 2018 /bin/rm

然后再切换到普通用户进行删除文件测试,发现可以删除了。步骤如下:

[root@linux ~]# su - oldya
上一次登录:二 3月 30 17:53:11 CST 2021pts/0 上
[oldya@linux ~]$ rm -rf /opt/root.txt

总结:

对rm设置了suid位以后,任何用户执行rm都是以root 的身份和权限来进行的,由此可见这样操作是很不安全的。
所以,建议大家不要在在企业中使用suid功能。

5.拓展-如何查找Linux系统里具有suid权限的文件

find / -type f -perm -4000 -ls

第3章 特殊权限sgid

1.什么是sgid特殊权限

1.对于二进制命令或者程序来说,sgid的功能与suid基本相同,唯一的区别是,suid是获得命令所属用户的身份和权限,而sgid是获得命令所属用户组的身份和权限。
2.setgid位主要用于目录中,在为某个目录设置了setgid位以后,在该目录中新创建的文件具有该目录的所属组权限,而不是创建该文件的用户的默认所有者。这就使得在多个用户之间共享一个目录中的文件变得简单。

2.sgid作用

1)与suid不同的是,sgid既可以针对文件,也可以针对目录进行设置
2)sgid的权限是针对用户组权限位的。

对于文件来说:

1)sgid仅对二进制命令及程序有效。
2)二进制命令或程序,也需要有可执行权限x的配合。
3)执行命令的任意用户可以获得该命令在程序执行期间所属组的身份和权限。

对于目录来说:

1)Linux里默认情况下所有用户创建文件,默认用户和组都是自身。
2)sgid可以让用户在此目录下创建的文件和目录具有与此目录相同的用户组设置。

3.sgid配置案例

下面就来看一道RHCE认证考试题(了解即可)。

题目需求:

1.创建共享目录/home/admins
2.要求属组为adminuser,adminuser组成员对admins目录有写入、读取和执行的权限
3.其他所有用户均没有任何权限(root除外)
4.在/home/admins目录中创建的文件会自动继承adminuser组的权限。

解答步骤:

[root@linux ~]# mkdir /home/admins
[root@linux ~]# groupadd adminuser
[root@linux ~]# ls -ld /home/admins
drwxr-xr-x 2 root root 6 3月  30 18:25 /home/admins
[root@linux ~]# chown :adminuser /home/admins/
[root@linux ~]# ls -ld /home/admins           
drwxr-xr-x 2 root adminuser 6 3月  30 18:25 /home/admins
[root@linux ~]# touch /home/admins/oldboy.txt
[root@linux ~]# ls -l /home/admins/
总用量 0
-rw-r--r-- 1 root root 0 3月  30 18:26 oldboy.txt
[root@linux ~]# chmod 2770 /home/admins
[root@linux ~]# ls -ld /home/admins          
drwxrws--- 2 root adminuser 24 3月  30 18:26 /home/admins
[root@linux ~]# touch /home/admins/newfile.txt
[root@linux ~]# ls -l /home/admins/
总用量 0
-rw-r--r-- 1 root adminuser 0 3月  30 18:27 newfile.txt
-rw-r--r-- 1 root root      0 3月  30 18:26 oldboy.txt

第4章 特殊权限sbit

1.sbit粘滞位作用

粘滞位sbit(sticky bit)的功能现在已经很少用了,不过对于 像/tmp目录这样的,因为其是整个系统用户的临时文件存放地,因此还是有点意义的。
如果查看/tmp的目录属性,就会发现这个目录权限大的离谱。

[root@linux ~]# ll -d /tmp/
drwxrwxrwt. 16 root root 4096 3月  30 19:36 /tmp/

一旦给目录赋予了粘滞位,那么这个目录除了root用户可以删除所有文件,其他用户都只能删除自己建立的文件,不能删除其他用户的文件。

总结如下:

1.只对目录生效
2.一个目录即使它的所有权限都开放了,即权限为rwxrwxrwx,但设置了粘滞位,那么除非目录的属主和root用户有权限删除它,除此之外其他用户是不能删除这个目录的。

2.sbit粘滞位配置

chmod 1755  /tmp
chmod o+t /tmp

第5章 文件特殊属性命令

1.更改文件特殊属性chattr

命令说明:

chattr命令用于改变文件的扩展属性。与chmod命令相比,chmod 只是改变了文件的读、写、执行权限,更底层的属性控制是由chattr 来改变的。

命令格式:

chattr [选项] [模式] [文件或目录]

选项:

-R     递归更改目录属性
-V  显示命令的执行过程

模式:

+      增加参数
-   移除参数
=   更改为指定的参数
A   告诉系统不要修改这个文件的最后访问时间
a   只能向文件里追加数据,不能删除
i   设定的文件不能被删除,改名,写入或新增内容

+a 只能追加命令实践:

[root@linux ~]# touch test.txt
[root@linux ~]# lsattr test.txt 
---------------- test.txt
[root@linux ~]# chattr +a test.txt 
[root@linux ~]# lsattr test.txt    
-----a---------- test.txt
[root@linux ~]# echo 111 >> test.txt 
[root@linux ~]# echo 222 >> test.txt
[root@linux ~]# echo 111 > test.txt  
-bash: test.txt: 不允许的操作
[root@linux ~]# rm -rf test.txt 
rm: 无法删除"test.txt": 不允许的操作

+i 文件加锁命令实践

[root@linux ~]# chattr +i test.txt 
[root@linux ~]# lsattr test.txt             
----ia---------- test.txt
[root@linux ~]# echo 333 >> test.txt        
-bash: test.txt: 权限不够
[root@linux ~]# echo > test.txt      
-bash: test.txt: 权限不够
[root@linux ~]# rm -rf test.txt 
rm: 无法删除"test.txt": 不允许的操作

应用场景:

避免恶意删除.bash_history历史记录文件或者重定向到/dev/null,又因为系统需要向这个文件写入历史记录,因此采用追加模式,只增不减。

chattr +a .bash_history

2.查看文件特殊属性lsattr

命令说明:

lsattr命令可用于查看文件扩展属性。

命令格式:

lsattr [选项] [文件或目录]

选项:

-R  递归查看目录的拓展属性
-a  显示所有文件包括隐藏文件的拓展属性
-d  显示目录的拓展属性

查看文件的拓展属性:

[root@linux ~]# lsattr test.txt             
----ia---------- test.txt

查看目录的拓展属性:

[root@linux ~]# lsattr -d /tmp/
---------------- /tmp/

第6章 默认权限掩码umask

1.什么是umask

通过上一课的学习我们了解到Linux里创建目录的默认权限是755,创建文件的权限是644。
那么为什么目录是755,文件是644呢?实际上是因为有umask在控制默认创建的权限。

2.umask如何计算

umask是通过八进制的数值来定义用户创建文件或目录的默认权限的。
系统会根据预先设定的umask值计算出默认情况下创建的文件或目录权限。
umask默认是022权限,当我们创建一个目录时,正常情况下的权限应该是777,然后减去umask的值,所以默认创建的目的权限是777-022=755。
同理,文件的默认权限应该是666,然后减去umask的值为666-022=644

3.基于文件的计算-有奇偶之分

创建文件默认最大的权限为666(-rw-rw-rw-),其默认创建的文件没有可执行权限x位。
对于文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减umask(umask的各个位数字也不能大于6,比如077就不符合条件)的掩码数值。如果得到的3位数字每一位都是偶数,那么这就是最终结果;如果有若干位的数字是奇数,那么这个奇数需要加1变成偶数,最后得到全是偶数的结果。

举例说明:

1)假设umask值为022(所有位均为偶数),那么文件的对应权限计算式为:

  666
- 022
------
  644

2)假设umask值为045(其他用户组位为奇数),那么文件的对应权限计算式为:

  666
- 045
------
  621
+ 001
------
  622

4.基于目录的计算-没有奇偶之分

1)假设umask值为022(所有位均为偶数),那么目录的对应权限计算式为:

  777
- 022
------
  755
目录
相关文章
|
7天前
|
弹性计算 双11 开发者
阿里云ECS“99套餐”再升级!双11一站式满足全年算力需求
11月1日,阿里云弹性计算ECS双11活动全面开启,在延续火爆的云服务器“99套餐”外,CPU、GPU及容器等算力产品均迎来了全年最低价。同时,阿里云全新推出简捷版控制台ECS Lite及专属宝塔面板,大幅降低企业和开发者使用ECS云服务器门槛。
|
24天前
|
存储 弹性计算 人工智能
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
阿里云弹性计算产品线、存储产品线产品负责人Alex Chen(陈起鲲)及团队内多位专家,和中国电子技术标准化研究院云计算标准负责人陈行、北京望石智慧科技有限公司首席架构师王晓满两位嘉宾,一同带来了题为《通用计算新品发布与行业实践》的专场Session。本次专场内容包括阿里云弹性计算全新发布的产品家族、阿里云第 9 代 ECS 企业级实例、CIPU 2.0技术解读、E-HPC+超算融合、倚天云原生算力解析等内容,并发布了国内首个云超算国家标准。
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
|
6天前
|
人工智能 弹性计算 文字识别
基于阿里云文档智能和RAG快速构建企业"第二大脑"
在数字化转型的背景下,企业面临海量文档管理的挑战。传统的文档管理方式效率低下,难以满足业务需求。阿里云推出的文档智能(Document Mind)与检索增强生成(RAG)技术,通过自动化解析和智能检索,极大地提升了文档管理的效率和信息利用的价值。本文介绍了如何利用阿里云的解决方案,快速构建企业专属的“第二大脑”,助力企业在竞争中占据优势。
|
4天前
|
人工智能 自然语言处理 安全
创新不设限,灵码赋新能:通义灵码新功能深度评测
自从2023年通义灵码发布以来,这款基于阿里云通义大模型的AI编码助手迅速成为开发者心中的“明星产品”。它不仅为个人开发者提供强大支持,还帮助企业团队提升研发效率,推动软件开发行业的创新发展。本文将深入探讨通义灵码最新版本的三大新功能:@workspace、@terminal 和 #team docs,分享这些功能如何在实际工作中提高效率的具体案例。
|
8天前
|
自然语言处理 数据可视化 前端开发
从数据提取到管理:合合信息的智能文档处理全方位解析【合合信息智能文档处理百宝箱】
合合信息的智能文档处理“百宝箱”涵盖文档解析、向量化模型、测评工具等,解决了复杂文档解析、大模型问答幻觉、文档解析效果评估、知识库搭建、多语言文档翻译等问题。通过可视化解析工具 TextIn ParseX、向量化模型 acge-embedding 和文档解析测评工具 markdown_tester,百宝箱提升了文档处理的效率和精确度,适用于多种文档格式和语言环境,助力企业实现高效的信息管理和业务支持。
3915 2
从数据提取到管理:合合信息的智能文档处理全方位解析【合合信息智能文档处理百宝箱】
|
11天前
|
负载均衡 算法 网络安全
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
阿里云平台WoSign品牌SSL证书是由阿里云合作伙伴沃通CA提供,上线阿里云平台以来,成为阿里云平台热销的国产品牌证书产品,用户在阿里云平台https://www.aliyun.com/product/cas 可直接下单购买WoSign SSL证书,快捷部署到阿里云产品中。
2182 6
阿里云WoSign SSL证书申请指南_沃通SSL技术文档
|
4天前
|
安全 数据建模 网络安全
2024阿里云双11,WoSign SSL证书优惠券使用攻略
2024阿里云“11.11金秋云创季”活动主会场,阿里云用户通过完成个人或企业实名认证,可以领取不同额度的满减优惠券,叠加折扣优惠。用户购买WoSign SSL证书,如何叠加才能更加优惠呢?
835 1
|
1天前
|
算法 数据建模 网络安全
阿里云SSL证书2024双11优惠,WoSign DV证书220元/年起
2024阿里云11.11金秋云创季火热进行中,活动月期间(2024年11月01日至11月30日),阿里云SSL证书限时优惠,部分证书产品新老同享75折起;通过优惠折扣、叠加满减优惠券等多种方式,阿里云WoSign SSL证书将实现优惠价格新低,DV SSL证书220元/年起。
530 4
|
2天前
|
存储 分布式计算 流计算
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
本文介绍了阿里云开源大数据团队在实时计算领域的最新成果——向量化流计算引擎Flash。文章主要内容包括:Apache Flink 成为业界流计算标准、Flash 核心技术解读、性能测试数据以及在阿里巴巴集团的落地效果。Flash 是一款完全兼容 Apache Flink 的新一代流计算引擎,通过向量化技术和 C++ 实现,大幅提升了性能和成本效益。
436 7
实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎
|
23天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服