碰巧看到老杨写的这篇文章《知识点 | linux系统文件和目录的权限掩码umask命令解读》,对Linux中的umask指令进行了讲解和操作,这些内容还是有很多日常工作中能用到的实践经验,可以学习了解。
Linux系统(或其他Linux发行版)中,umask命令用于设置用户创建新文件或目录时的默认权限掩码。它本身不是一个文件,而是一个设置值。
1. 命令概念
umask值定义了需要从默认权限中屏蔽掉(减去)的权限位。
文件默认最大权限:666 (rw-rw-rw-)。
目录默认最大权限:777 (rwxrwxrwx)。
umask值通常用八进制表示(如022, 002, 077)。
实际权限 = 默认最大权限 - umask 值。
2. 修改umask的方法
两种修改方式,一种临时,一种永久;
临时修改(仅对当前Shell会话有效)
直接在终端输入umask命令加新值:
umask <新值>
示例:
(1)设置umask为022(常见默认值,新文件权限644,目录755):
命令:umask 022
(2)设置umask为002(用户和组有写权限,新文件664,目录775,适用于协作环境):
命令:umask 002
(3)设置umask为077(最严格,仅用户自己有权限,新文件600,目录700):
命令:umask 077
验证当前umask配置状态
命令:umask
永久修改(对所有新登录会话生效)
需要修改用户的Shell 配置文件(如 ~/.bashrc, ~/.profile, /etc/profile, /etc/bash.bashrc)。推荐优先修改用户级配置文件 (~/.bashrc)。
操作步骤:
(1)打开配置文件(以 ~/.bashrc 为例):
vi ~/.bashrc # 使用vim或gedit编辑器
(2)在文件末尾添加一行:
umask <你想要的umask值> # 例如umask 002或umask 022
(3)保存并退出编辑器:
Nano: 按Ctrl+O保存,按Enter确认文件名,再按Ctrl+X退出。
Vim: 按:wq然后回车。
(4)使更改立即生效(在当前终端):
source ~/.bashrc
或者直接关闭并重新打开终端。
(5)(可选) 系统级修改:
如果需要为所有用户设置默认umask,需编辑系统级配置文件(需要管理员权限):
/etc/profile
/etc/bash.bashrc
提示:特定于登录Shell 的 /etc/profile.d/*.sh(推荐创建自定义文件),操作前务必备份。
重点的说明:权限计算示例,
umask 022
文件:
666 - 022 = 644 (rw-r--r--)
目录:
777 - 022 = 755 (rwxr-xr-x)
umask 002
文件:
666 - 002 = 664 (rw-rw-r--)
目录:
777 - 002 = 775 (rwxrwxr-x)
umask 077
文件:
666 - 077 = 600 (rw-------)
目录:
777 - 077 = 700 (rwx------)
umask值表示被屏蔽的权限:
0 = 不屏蔽任何权限(允许读、写、执行)
2 = 屏蔽写权限
4 = 屏蔽读权限
6 = 屏蔽读和写权限 (4+2)
7 = 屏蔽读、写和执行权限 (4+2+1)
符号表示法:umask也可用符号模式设置(如u=rwx,g=rx,o=),但八进制形式更常用。
三点安全建议:
1)普通用户:002或022是常见选择,取决于是否需要同组用户协作。
2)严格环境/root用户:考虑077或027(屏蔽其他用户的所有权限)。
3)修改系统级umask要极其谨慎,错误设置可能导致系统服务或新用户遇到权限问题。
场景 | 命令 | 生效范围 |
---|---|---|
临时修改 | umask <新值> | 当前Shell会话 |
永久修改(用户级) | 在 ~/.bashrc 添加 umask <值> | 用户所有新登录会话 |
永久修改(系统级) | 在 /etc/profile 等文件添加 | 所有用户 |
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发朋友圈,