首页 > 运维 > linux运维 > 正文

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

P粉602998670
发布: 2025-08-12 11:08:02
原创
780人浏览过

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或图形界面可能需单独配置以确保生效。

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

在 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
登录后复制

AI新媒体文章
AI新媒体文章

专为新媒体人打造的AI写作工具,提供“选题创作”、“文章重写”、“爆款标题”等功能

AI新媒体文章 75
查看详情 AI新媒体文章

编辑 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
登录后复制
看似简单,但对系统安全和协作效率影响不小,合理配置能避免很多权限问题。

以上就是如何设置默认umask 控制新建文件权限的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号