直接用 mkdir 创建目录并查看权限是最简单有效的测试方式:先用 umask 和 umask -S 确认当前屏蔽规则,再执行 mkdir testdir 并用 ls -ld 检查权限,验证 777−umask 是否等于实际权限,排除 setgid、IDE 或脚本干扰。

直接用 mkdir 创建目录并查看权限,是最简单有效的测试方式。
准备:确认当前 umask 值
在终端运行:
-
umask—— 显示当前八进制值(如0002) -
umask -S—— 显示符号化权限(如u=rwx,g=rwx,o=rx)
这两个命令能帮你明确“屏蔽规则”,是后续验证的基准。
实测:创建目录并检查权限
执行以下三步,排除干扰:
- 运行
mkdir testdir(不带-m参数) - 立即运行
ls -ld testdir - 观察输出中的权限字段,例如:
drwxrwxr-x对应八进制775
注意:必须避免使用 mkdir -m 755 testdir 这类显式指定权限的写法,否则会完全绕过 umask。
验证计算逻辑是否成立
将观察到的目录权限(如 775)与理论值比对:
- 目录默认最大权限是
777 - 若
umask是002,则777 − 002 = 775→ 符合 - 若
umask是007,预期结果应为770
只要没被其他机制(如父目录的 setgid 位、脚本硬编码 mode)覆盖,这个减法关系就成立。
排查常见失效原因
如果 ls -ld 显示的权限和计算结果不符,重点查这三点:
- 你改的配置文件(如
~/.profile)是否真的被加载?新开终端后运行umask确认值已变 - 当前工作目录是否设置了 setgid(
drwxrwsr-x中的s)?它会影响新目录的属组,间接让组权限“看起来没生效” - 是否在 IDE、rsync 或自动化脚本里创建目录?这些工具常直接调用系统 API 并传固定权限,不走 shell 的 umask 流程
用纯终端手动 mkdir + ls -ld 就能锁定问题来源。


















