Linux 权限管控核心!umask 命令超详细教程(默认权限计算 + 实战配置) 1. 命令简介umaskuser file creation mask是 Linux/Unix 系统中的内建命令用于显示或设置创建新文件或目录时的默认权限掩码。权限掩码决定了新创建的文件或目录的初始权限它通过 “屏蔽” 某些权限位来工作。系统使用公式最终权限 默认权限 (~umask) 来计算新对象的权限。对于普通文件系统的默认权限通常是 666即 rw-rw-rw-。 对于目录系统的默认权限通常是 777即 drwxrwxrwx。 umask 值是一个八进制数它指定了需要被屏蔽即不允许的权限位。2. 语法格式plaintextumask [-p] [-S] [mode]格式说明mode可选参数。用于设置新的 umask 值。它可以表示为八进制数字例如 022、002。符号模式类似于 chmod 命令的符号表示法例如 urwx,grx,o。-p 选项当不带 mode 参数使用时以可重用的格式输出当前的 umask 值。输出格式为 umask 八进制掩码可直接作为命令输入执行。-S 选项以符号形式Symbolic输出当前的权限掩码显示的是实际赋予新创建文件的权限而不是屏蔽值。格式如 urwx,grx,orx。3. 常用选项及说明表格选项说明无选项以八进制形式显示当前的权限掩码。-p以可重用portable的格式输出。当需要保存或脚本化当前 umask 设置时非常有用。-S以符号形式输出当前掩码对应的实际权限。这更直观地显示了新文件 / 目录将获得的权限。mode设置新的 umask 值。可以是八进制数或符号组合。权限符号说明与 chmod 类似用户类别u文件所有者userg与所有者同组的用户groupo其他用户othersa所有用户all等价于 ugo权限操作符添加指定权限-移除指定权限精确设置权限并移除未提及的权限权限类型r读权限八进制值 4w写权限八进制值 2x执行权限八进制值 14. 示例用法示例 1显示当前 umask以八进制形式显示最常见:bash运行umask输出可能为0022以符号形式显示实际赋予的权限:bash运行umask -S输出可能为urwx,grx,orx 解释所有者有读、写、执行权组和其他用户有读、执行权。示例 2以可重用格式输出bash运行umask -p输出umask 0022 你可以将此输出重定向到文件或直接在另一个 shell 中运行以恢复此设置。示例 3设置新的 umask八进制方式设置 umask 为 027 屏蔽组用户的写权限和其他用户的所有权限:bash运行umask 0027验证设置:bash运行umask -S输出urwx,grx,o新建文件的权限将为文件 640 (rw-r-----)目录 750 (drwxr-x---)。示例 4使用符号模式设置 umask为 “其他用户 (o)” 移除读 (r) 权限:bash运行umask o-r为 “组用户 (g)” 添加写 (w) 权限即从掩码中移除写屏蔽位:bash运行umask gw注意符号模式操作的是 “掩码” 本身。gw 意味着在掩码中去除组的写屏蔽位。精确设置权限赋予所有用户 (a) 所有权限 (rwx)即 umask 为 0:bash运行umask arwx等效于umask 0清除其他用户的所有权限:bash运行umask o示例 5umask 对新文件 / 目录的影响假设当前 umask 为 022创建新文件:bash运行touch newfile.txt ls -l newfile.txt权限显示-rw-r--r-- (644) 计算默认文件权限 666 (~022) 666 755 644创建新目录:bash运行mkdir newdir ls -ld newdir权限显示drwxr-xr-x (755) 计算默认目录权限 777 (~022) 777 755 755示例 6在 Shell 脚本或配置文件中使用bash运行# 保存当前的 umask ORIGINAL_UMASK$(umask -p) # 执行一些需要严格权限的操作 umask 077 # 确保新建文件仅所有者可读写 touch sensitive-data.conf # 恢复原来的 umask eval $ORIGINAL_UMASK5. 注意事项作用范围umask 设置是针对当前 Shell 会话或进程及其子进程的。修改只在当前终端或脚本运行时有效退出后失效。要永久生效需将 umask 命令添加到 Shell 的启动文件中如/.bashrc、~/.bash_profile。对已有文件无效umask 只影响命令执行后新创建的文件和目录不会改变任何已有文件或目录的权限。修改已有文件权限请使用 chmod 命令。执行权限的差异对于文件系统默认没有执行权限x。因此即使 umask 值为 0新创建的普通文件也不会自动获得执行权限权限为 666。对于目录执行权限x是进入目录所必需的因此计算时会基于默认的 777 权限。获取更多Linux学习资料请关注“阿成学长工具包”对话框中输入2647获取