当前位置: 首页 > news >正文

运维开发宝典009-高级权限、文件属性chattr、进程掩码umask

运维开发宝典009-高级权限、文件属性chattr、进程掩码umask

​ 大家好,我是云计算磊哥,从业20年的IT老鸟。运维培训15年,总结了一套从入门到精通的全运维开发宝典手册。准备用300天时间写一套博文,手把手从安装软件讲起,从行业到产品,从过去到未来,从理论到操作,从视频到文档工具,一站式。从零基础入门到20k运维开发工程师岗位诸多就业问题。多方位全方面的给你讲清楚云计算这个行业该如何做。关注我。后续更精彩。


​ 上篇已经介绍了基本权限UGO和基本权限ACL的基本用法,此外,文件权限还有许多高价用法使程序更加简洁、更易维护。下面将介绍高级权限、文件属性chattr和进程掩码umask。

一,SUID权限

​ 使用ll命令查看/usr/bin/passwd文件,第1行的第4个字符为“s”。“s”表示特殊权限SUID,具体如下所示。

[root@localhost ~]# ll /usr/bin/passwd-rwsr-xr-x.1root root278326102014/usr/bin/passwd

​ 任何用户在执行该文件时,其身份是该文件的属主,在进程文件(二进制,可执行)上增加SUID权限,让本来没有相应权限的用户也可以访问没有权限访问的资源。

​ 普通用户通过SUID提权,使用chmod命令给user增加SUID权限,切换到alice用户下,即可查看/root/fiel01.txt,具体如下所示。

[root@localhost ~]# chmod u+s /usr/bin/cat[root@localhost ~]# ll /usr/bin/cat-rwsr-xr-x.1root root540801162016/usr/bin/cat[alice@localhost ~]$cat/root/file01.txt linux

二,SGID权限

在一个程序上添加SGID,用户在执行过程中会获得该程序用户组的权限(相当于临时加入了程序的用户组)。

在目录/home下创建一个目录hr,将hr组添加到该目录下,查看目录属组修改为hr。在/home/hr目录下创建一个文件file02,该文件属组为root,并没有继承上级目录的hr组,具体如下所示。

[root@localhost ~]# mkdir /home/hr[root@localhost ~]# groupadd hr[root@localhost ~]# chgrp hr /home/hr[root@localhost ~]# ll -d /home/hrdrwxr-xr-x.2root hr641601:43 /home/hr[root@localhost ~]# touch /home/hr/file02[root@localhost ~]# ll /home/hr/file02-rw-r--r--.1root root041601:49 /home/hr/file02

在一个目录上添加SGID,该目录下新创建的文件会继承其属组,具体如下所示。

[root@localhost ~]# chmod g+s /home/hr[root@localhost ~]# ll -d /home/hrdrwxr-sr-x.2root hr2041601:49 /home/hr[root@localhost ~]# touch /home/hr/file03[root@localhost ~]# ll /home/hr总用量0-rw-r--r--.1root root041601:49 file02 -rw-r--r--.1root hr041601:51 file03

三,Sticky权限

​ 添加Sticky后,当用户对目录具有w、x权限,在该目录下建立文件或目录时,仅有自己与root才有权利删除该文件。

在目录/home下创建目录dir01,并赋予其777权限,具体如下所示。

[root@localhost ~]# mkdir /home/dir01[root@localhost ~]# chmod 777 /home/dir01/

使用alice用户在该目录下创建文件file,再使用tom用户尝试删除file文件,具体如下所示。

[alice@localhost ~]$touch/home/dir01/file[alice@localhost dir01]$lsfile[tom@localhost ~]$rm-rf/home/dir01/file[tom@localhost dir01]$ls[tom@localhost dir01]$

添加“t”参数后,用户只能删除自己的文件,具体如下所示。

[root@localhost ~]# chmod o+t /home/dir01/[root@localhost ~]# ll -d /home/dir01/drwxrwxrwt.2root root641602:35 /home/dir01/[alice@localhost ~]$touch/home/dir01/file01[tom@localhost dir01]$lsfilefile01[tom@localhost dir01]$rm-rffile01

rm: 无法删除"file01": 不允许的操作

​ 系统还存在一些目录(如tmp目录),为了保证该目录下文件的安全,系统自动为其增加了“t”权限,因此目录下的文件只有属主才可以删除。/tmp目录为全局可写,其权限只能为1777,否则会导致程序不能正常运行,具体如下所示。

[root@localhost ~]# ll -d /tmp/drwxrwxrwt.35root root409641610:24 /tmp/

​ 权限的字符位只有9位,增加特殊权限会占用“x”权限的位置。为了区分目录或文件是否含有“x”权限,系统会以特殊权限的大小写方式给予提示。当符号为大写时,表示不含有“x”权限;当符号为小写时,表示含有“x”权限。

​ 例如,给目录/home/dir01/去除“x”权限后,其中“t”权限变为大写;给目录/home/dir10增加7777权限后删除“x”权限,特殊权限符号均变为大写,具体如下所示。

[root@localhost ~]# ll -d /home/dir01/drwxrwxrwt.2root root3241602:53 /home/dir01/[root@localhost ~]# chmod o-x /home/dir01/[root@localhost ~]# ll -d /home/dir01/drwxrwxrwT.2root root3241602:53 /home/dir01/[root@localhost ~]# chmod 7777 /home/dir01/[root@localhost ~]# ll -d /home/dir01/drwsrwsrwt.2root root3241602:53 /home/dir01/[root@localhost ~]# chmod -x /home/dir01/[root@localhost ~]# ll -d /home/dir01/drwSrwSrwT.2root root3241602:53 /home/dir01/

总结高级权限的用法,如表所示。

高级权限数字符号文件目录
SUID4以属主身份执行
SGID2以属组身份执行继承属组
Sticky1用户只能删除自己的文件

四,文件属性chattr

​ 为了保护系统文件,Linux系统会使用chattr命令改变文件的隐藏属性。chattr命令仅对EXT2/EXT3/EXT4文件系统完整有效,其他文件系统可能仅支持部分隐藏属性或者根本不支持隐藏属性。

​ 创建3个文件(file01、file02、file03),使用lsattr命令查看这3个文件的隐藏属性,全部为空,具体如下所示。

[root@localhost ~]# touch file01 file02 file03[root@localhost ~]# lsattr file01 file02 file03---------------- file01 ---------------- file02 ---------------- file03

使用man工具查看chattr命令的使用方法,具体如下所示。

[root@localhost ~]# man chattr

下面列举常用的两个隐藏属性加以说明。

使用chattr命令给file01文件增加“a”属性,具体如下所示。

[root@localhost ~]# chattr +a file01[root@localhost ~]# lsattr file01-----a---------- file01

当给file02文件增加“a”属性之后,便不能再使用Vim编辑器写入文本,需要使用echo命令以追加的方式写入。此属性一般用于日志文件,因为日志文件内容是在后面追加,前面的内容不能被覆盖,整个文件也不能被删除。当需要截取某段日志时,去除该属性即可,具体如下所示。

[root@localhost ~]# vim file02[root@localhost ~]# cat file02linux[root@localhost ~]# chattr +a file02[root@localhost ~]# echo "www.localhost.com" > file02bash: file02: 不允许的操作[root@localhost ~]# rm -rf file02rm: 无法删除"file02":不允许的操作[root@localhost ~]# echo "www.localhost.com" >> file02[root@localhost ~]# cat file02linux[www.localhost.com](http://www.localhost.com)[root@localhost ~]# chattr -a file02

​ 当给file03文件增加“i”属性之后,该文件不接受任何形式的修改,只能读取。例如,生产环境中在没有需求的情况下并不希望有人创建用户,为了防止非法者进入随意创建,一般会给/etcpasswd文件增加“i”属性保证安全,具体如下所示。

[root@localhost ~]# chattr +i file03[root@localhost ~]# echo "www.localhost.com" >> file03bash: file03: 权限不够[root@localhost ~]# rm -rf file03

rm: 无法删除"file03": 不允许的操作

Ø*进程掩码u**mask*

当用户创建新目录或文件时,系统会赋予目录或文件一个默认的权限,umask的作用就是指定权限默认值。为系统设置一个合理的 umask值,确保创建的文件或目录具有所希望的缺省权限,以保证数据安全。

umask值表示要减掉的权限,也可以简单的理解为权限的“反码”,进程和新建文件、目录的默认权限都会受到umask的影响。例如,创建目录dir001,创建文件file001,然后查看umask默认权限及文件与目录的权限,具体如下所示。

[root@localhost ~]# mkdir dir001[root@localhost ~]# touch file001[root@localhost ~]# umask0022[root@localhost ~]# ll -d dir001drwxr-xr-x.2root root641615:00 dir001[root@localhost ~]# ll file001-rw-r--r--.1root root041615:01 file001

​ 新建的目录如果全局可写,基本权限应该是777,但实际上基本权限是755,新创建的文件基本权限为644,因为umask要强制去掉group与other的写权限,而文件系统默认不赋予执行权限。

​ 当把umask默认权限设置为0777,新创建的目录与文件的基本权限为000,具体如下所示。

[root@localhost ~]# umask 0777[root@localhost ~]# mkdir dir002[root@localhost ~]# touch file002[root@localhost ~]# ll -d dir002 file002d---------.2root root641615:40 dir002 ----------.1root root041615:40 file002

不同的进程都可以设置自己的umask,上述示例是在Shell当中影响的是touch命令。新创建的用户/home目录的权限默认为700,可以通过改变/etc/login.defs文件中第64行UMASK的权限值改变,将077修改为000,具体如下所示。

[root@localhost ~]# useradd user001[root@localhost ~]# ll /home/总用量8drwx------.3user001 user0017841616:01 user001[root@localhost ~]# vim /etc/login.defs63# the permission mask will be initialized to 022.64UMASK 000[root@localhost ~]# useradd user002[root@localhost ~]# ll /home/drwxrwxrwx.3user002 user0027841616:18 user002

​ 好了,关于三个文件特别权限,SUID权限,SGID权限,Sticky权限就讲完了。还有文件属性chattr,进程掩码umask大家了解即可,因为这是系统管理文件权限的一部分必须讲,但相对于chmod使用情况比较少。配套视频

http://www.jsqmd.com/news/673125/

相关文章:

  • Windows Cleaner:如何通过3个简单步骤解决C盘空间不足和系统卡顿问题
  • 济南顺宇安装:高空车租赁、升降车租赁、曲臂车、路灯车租赁等专业服务商 - 品牌企业推荐师(官方)
  • 高效实现PPTX转HTML的纯前端技术方案
  • 租天下实业携手前海周大福金融大厦,0佣金服务赋能湾区总部选址 - 品牌企业推荐师(官方)
  • 让腰围持续下降的 4 个方法,巨有效
  • 告别CANalyzer!用Python+ZCANPro/ECAN Tools也能玩转CAN总线数据分析与自动化测试
  • AMD处理器深度调试指南:5步掌握SMUDebugTool核心调优技巧
  • Transformer架构原理的菜鸟学习之路02——位置编码(Positional encoding)
  • 基于Verilog开发的FPGA密码锁工程:矩阵键盘输入按键值、修改密码和开锁功能,带Quar...
  • #官方认证|2026年长三角三大正规人脸门禁公司排名 上海苏州嘉兴等地 骏通智能综合实力遥遥领先 - 十大品牌榜
  • 新手必看:FastAPI 参数接收的正确姿势(路径 / 查询 / 请求体全解析)
  • ODF配线架安装全流程实录:72芯高密度布线+光纤熔接避雷手册
  • 别再死记定义了!用Python可视化带你直观理解‘一致连续’与‘连续’的天壤之别
  • D3KeyHelper:暗黑破坏神3自动化战斗宏工具完全指南
  • 终极DayZ离线模组指南:如何免费畅享完整单机体验
  • 安装 Docker on AlmaLinux 8
  • 终极指南:如何用VTube Studio API打造智能虚拟主播互动系统 [特殊字符]
  • 算法题(滑动窗口、动态规划)
  • HardSwish激活函数改进YOLOv26高效非线性映射与计算优化双重突破
  • 终极指南:如何免费解锁惠普游戏本全部性能潜力
  • 别再手算齿轮参数了!用MATLAB脚本搞定二级减速器设计(附完整代码)
  • 别再用Keil下载了!用ST-LINK Utility给STM32烧录程序的3个隐藏技巧(附v4.6.0安装包)
  • 为什么你的Dify医疗问答系统正在悄悄泄露患者ID?——3行正则+2个中间件钩子即刻封堵
  • 数学证明不再是AI的“奢侈品”:2026奇点大会公布轻量化AGI验证套件(<2GB内存占用,支持边缘端实时验证)
  • 第三篇:Vibe Coding 深度解析(三):从 0 到 1 的落地实战指南
  • STC单片机蓝牙无线下载避坑指南:为什么你的STC15/STC8总是烧录失败?
  • KICS认知公尺完整体系:从概念到可运行的量化模型与Dashboard
  • 从STC89C51到蓝牙芯片CC2541:手把手拆解两款经典芯片,看透SOC的‘定制’内核
  • KMP与Flutter选型实战指南
  • 保姆级教程:在Ubuntu 20.04上从零部署YOLOv5+DeepSORT+C++ TensorRT目标跟踪项目(含常见编译错误解决)