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

Linux篇(六)服务器安全必备:umask 配置与权限计算全攻略

很多初学者刚接触 Linux 权限时,都搞不懂 umask 存在的意义,明明可以直接设定文件目录权限,为何还要多一层掩码计算?其实这是 Unix 系系统经典的权限设计思路,umask 凭借灵活可调的特性,适配不同使用场景的权限需求,本期文章带大家全面吃透 umask。

1.什么是umask

umask 是用户文件权限掩码,作用是控制新建文件 / 目录的默认权限


系统创建文件、文件夹时,并不是直接给满权限,而是用「系统默认最大权限 - umask 掩码」算出最终权限。

普通用户默认 umask 0022


root默认 umask 0022 或 0027

第一位是特殊权限位,后三位才是常规权限掩码

2.为什么会存在umask

了解文件权限的伙伴都知道:

目录默认最大权限:777(rwxrwxrwx)
普通文件默认最大权限:666(rw-rw-rw-)

终权限计算公式:
目录权限 = 777 - umask
文件权限 = 666 - umask

为什么目录的默认最大权限是777,而文件的默认最大权限是666?

文件天生不需要执行权限,目录天生必须要有执行权限,所以内核硬写死了创建初始基准权限

为什么会有“默认”这两个关键字呢?为什么不在文件创建的时候直接进给定终极权限?

1. 权限场景不是固定一成不变
1.内网开发机、多人共享目录:适合 0002(775/664),同组可读写
2.生产服务器、安全严苛环境:要更严格,比如 0027
3.目录 750、文件 640,其他用户完全没权限,防止泄密越权
4.个人单机自用:甚至可以更宽松
如果系统写死默认就是 775/664,无法一键切换全局安全等级。
2. 系统要兼容多用户、多发行版、多环境
1.Linux 是通用内核,要适配
1.个人桌面
2.企业服务器
3.嵌入式设备
4.多用户集群
固定死权限 = 失去灵活性,用 umask 只改一个数字,全局新建文件目录权限全部批量切换,不用改系统源码、不用改内核默认值。
3. 历史设计逻辑:基准最大权限 + 掩码收权
1.Unix 最初设计思路
先给理论最大开放权限:目录 777、文件 666
再用 umask 减掉不该有的权限做安全收缩
这种减法设计更符合安全思路:
默认全开,按需收权,而不是默认定死,再逐个加权限
4. 区分「用户级」和「全局级」权限策略
1.普通用户:默认 0022 → 755/644
2.管理员 / 特定用户:可自行改成 0002(775/664)共享模式
3.运维加固:统一改成 0027 严格模式
每个人、每个业务、每台服务器可以独立定义默认权限,不用统一一刀切 775/664。
5. 程序自动创建文件无法硬编码权限
大量后台程序、日志服务、编译工具、定时任务创建文件时,不会内置写死 775/664。
它们统一遵循系统umask 规则,由环境变量统一控制,适配所有业务场景。


一句话总结:直接固定 775/664 是写死标准答案,umask 是给你一套可自由调节的权限标尺

3.最终权限计算原理

无论是目录还是文件,他们最终权限的计算本质是通过位运算来实现的

真实底层运算:

1.默认最大权限

2.把umask按位取反~

3.umask按位取反后再与默认最大权限按位与&

下面我们看看到底是怎么运算的

4.umask的修改

在对umask进行修改时,有两种形式:暂时性修改永久性修改

暂时性修改:

永久性修改:

4.总结

Linux 不直接定死 775 与 664,是为了用一把 umask 标尺,适配从个人开发到企业生产所有安全权限场景。

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

相关文章:

  • 告别内存泄漏:用Cppcheck给你的C/C++代码做个深度体检(附实战配置)
  • 开源自动化部署工具deploy-openclaw:架构解析与实战指南
  • Docker镜像逆向分析:dfimage工具原理、实战与安全审计指南
  • XUnity自动翻译器:5分钟快速为Unity游戏添加中文支持的终极指南
  • 三次迭代作业Blog
  • 2026年银川假肢矫形器/假肢生产厂家TOP5深度观察:技术与人文的融合实践 - 深度智识库
  • NotebookLM+Jupyter+GitLab三端协同实验设计(附2024最新工作流模板下载)
  • Waifu2x-Extension-GUI:从新手到专家的多媒体AI处理全攻略
  • 前端打印新思路:不装驱动,用C-Lodop插件直接调用远程打印机(含顺丰插件下载与代码实战)
  • 智慧零售技术架构解析:从4G Cat.1到5G RedCap的物联网连接实践
  • GPTs商店里的“隐形冠军”:被低估的5个GitHub Star>2.4k、日均调用量破12万次的开源可部署GPT(附Docker一键部署脚本)
  • 面向对象程序设计总结
  • Linux后台任务脱离生产排障流程
  • 5分钟上手Waifu2x-Extension-GUI:AI超分辨率让你的图片视频焕然一新
  • 146.DS补充--红黑树的理解学习
  • 思源宋体TTF终极指南:7种字重免费商用完整教程
  • 从井字棋AI到启发式评估:BoDi算法实战解析
  • 从零上手ESP8266:以ESP-12F为例,详解Wi-Fi模块的硬件设计与快速接入
  • 多维可控阻尼空间捕获机械臂镇定控制【附仿真】
  • 具身智能认知瓶颈突破在即,NotebookLM如何重构机器人“工作记忆”架构?
  • 深度清理显卡驱动残留:开源工具Display Driver Uninstaller全面指南
  • 从 LLM 网关角度看 API 中转站选型:token5u 优先的实现思路
  • 【深度学习新浪潮】深度学习浪潮下,AI算力芯片面临的核心技术需求与演进方向
  • Taotoken控制台功能详解,从API Key管理到用量审计
  • 2026重庆除甲醛公司推荐:高性价比怎么选不踩坑 - GrowthUME
  • 如何免费体验所有LOL皮肤:R3nzSkin国服特供版终极指南
  • FanControl终极指南:Windows风扇控制神器,彻底解决噪音与散热难题
  • Arm DynamIQ™ DSU架构解析与多核设计优化
  • ESP32-S3驱动DotStar LED矩阵:打造可交互WiFi信息显示立方体
  • 从飞控到机器人:大疆BMI088 IMU零漂校准的通用方法与实践避坑指南