如何设置默认umask 控制新建文件权限

发布时间 - 2025-08-12 00:00:00    点击率:

umask是linux中用于控制新建文件和目录默认权限的掩码,通过从文件最大权限666和目录最大权限777中屏蔽相应权限位来确定实际权限;例如umask 022创建文件为644、目录为755,umask 002则为664和775,适合组内共享;系统级设置可通过修改/etc/profile、/etc/login.defs或使用pam模块(如pam_umask.so)实现,其中pam方式推荐用于统一管理不同登录场景;单个用户可通过修改~/.bashrc、~/.zshrc等shell配置文件设置;常见umask值包括022(最常用)、002(协作环境)、077(完全私有)和007(组共享);验证时需打开新终端执行umask命令并创建测试文件检查权限;需注意umask仅影响新文件,权限计算为按位屏蔽而非数学减法,且某些服务如cron或图形界面可能需单独配置以确保生效。

在 Linux 和类 Unix 系统中,

umask
决定了新建文件和目录的默认权限。通过设置默认
umask
,可以控制新创建文件的访问权限,提升系统安全性或满足协作需求。

什么是 umask

umask
是一个权限掩码,它从默认的最大权限中“屏蔽”掉某些权限。

  • 文件默认最大权限是
    666
    (可读可写)
  • 目录默认最大权限是
    777
    (可读可写可执行)

umask
值会从这些最大权限中减去,得到实际创建文件时的权限。例如:

  • umask 022
    :文件权限为
    644
    ,目录为
    755
  • umask 002
    :文件权限为
    664
    ,目录为
    775
    (适合组内共享)

如何设置系统级默认 umask

如果你希望为整个系统或所有用户设置默认

umask
,可以通过以下方式:

1. 修改
/etc/profile
/etc/bashrc

这些文件影响所有使用 bash 的用户。

编辑

/etc/profile

sudo nano /etc/profile

在文件末尾添加:

umask 022

保存后,所有新登录的用户会应用这个

umask

注意:修改后仅对新登录会话生效,当前终端不会立即改变。

2. 修改
/etc/login.defs
(适用于通过 login 创建的用户)

某些系统(如使用 shadow 密码的)会从

/etc/login.defs
读取
umask
设置。

编辑文件:

sudo nano /etc/login.defs

找到并修改:

UMASK           022

这个设置会影响

useradd
创建的新用户。

3. PAM 模块设置(推荐用于精细控制)

许多现代 Linux 发行版使用 PAM(Pluggable Authentication Modules)来设置

umask

编辑 PAM 配置文件:

sudo nano /etc/pam.d/common-session

添加一行:

session optional pam_umask.so umask=022

这样在用户登录时,PAM 会自动设置

umask
,适用于多种 shell 和登录方式(如 SSH、图形界面等)。


如何为单个用户设置 umask

如果只想为某个用户设置,可以修改其 shell 配置文件。

编辑用户家目录下的配置文件

例如,对于使用 bash 的用户,编辑:

~/.bashrc
~/.bash_profile

添加:

umask 022

如果是 zsh 用户,修改

~/.zshrc

注意:不同 shell 使用不同的配置文件,需确认当前用户使用的是哪种 shell。


umask 值的常见选择

  • 022
    :最常见,文件
    644
    ,目录
    755
    ,适合大多数个人或服务器环境
  • 002
    :文件
    664
    ,目录
    775
    ,适合团队协作,组内成员可写
  • 077
    :文件
    600
    ,目录
    700
    ,完全私有,仅用户自己可访问
  • 007
    :文件
    660
    ,目录
    770
    ,适合组共享但拒绝其他用户

验证 umask 是否生效

打开新终端,运行:

umask

输出应为设置的值(如

0022
)。

测试创建文件和目录:

touch testfile
mkdir testdir
ls -l testfile testdir

查看权限是否符合预期。


注意事项

  • umask
    只影响新创建的文件和目录,不会改变已有文件权限
  • 权限计算是“最大权限减去 umask”,但实际是按位屏蔽,不是数学减法
  • 某些应用程序(如 SSH、cron)可能不继承 shell 的 umask,需单独配置
  • 图形界面登录可能不加载
    .bashrc
    ,建议在
    .profile
    或 PAM 中设置

基本上就这些。设置

umask
看似简单,但对系统安全和协作效率影响不小,合理配置能避免很多权限问题。


# linux  # bash  # 继承  # ssh  # unix  # 配置文件  # 适用于  # 可通过  # 的是  # 开新  # 掩码  # 是一个  # 如果你  # 已有  # 可以通过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Thinkphp 中 distinct 的用法解析  android nfc常用标签读取总结  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  如何有效防御Web建站篡改攻击?  EditPlus中的正则表达式 实战(4)  香港服务器WordPress建站指南:SEO优化与高效部署策略  微信公众帐号开发教程之图文消息全攻略  如何快速选择适合个人网站的云服务器配置?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  iOS UIView常见属性方法小结  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  轻松掌握MySQL函数中的last_insert_id()  如何彻底删除建站之星生成的Banner?  LinuxShell函数封装方法_脚本复用设计思路【教程】  网站制作免费,什么网站能看正片电影?  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何选择PHP开源工具快速搭建网站?  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  高防服务器租用如何选择配置与防御等级?  javascript读取文本节点方法小结  如何快速生成可下载的建站源码工具?  Laravel如何使用Service Container和依赖注入?(代码示例)  如何用搬瓦工VPS快速搭建个人网站?  linux top下的 minerd 木马清除方法  如何在阿里云ECS服务器部署织梦CMS网站?  创业网站制作流程,创业网站可靠吗?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Python结构化数据采集_字段抽取解析【教程】  JavaScript数据类型有哪些_如何准确判断一个变量的类型  制作企业网站建设方案,怎样建设一个公司网站?  Laravel如何使用Telescope进行调试?(安装和使用教程)  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  Laravel定时任务怎么设置_Laravel Crontab调度器配置  如何构建满足综合性能需求的优质建站方案?  Python数据仓库与ETL构建实战_Airflow调度流程详解  Java类加载基本过程详细介绍  如何将凡科建站内容保存为本地文件?  JS弹性运动实现方法分析  html5的keygen标签为什么废弃_替代方案说明【解答】