如何设置默认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标签为什么废弃_替代方案说明【解答】

