mkdir -m 可在创建目录时直接指定八进制权限(如755、700),覆盖umask影响,实现精确权限控制;最末级目录获指定权限,上级目录仍受umask约束。

用 mkdir -m 可以在创建目录时直接指定八进制权限,跳过 umask 的影响,实现精确控制。
mkdir -m 的基本用法
-m 选项允许你显式设置新建目录的权限模式,格式为八进制三位数(如 755、700),它会**覆盖当前 umask 设置**,不经过减法或位运算计算。
- 命令结构:
mkdir -m <em>MODE</em> <em>DIRNAME</em> -
MODE 必须是三位八进制数(如
755),不能带前导0(即写755,不是0755;但多数 shell 兼容两者) - 权限生效立即可见,无需后续
chmod
常见权限值与适用场景
选对 -m 值取决于使用意图:
-
mkdir -m 755 mypub→ 所有者可读写执行,组和其他人仅读+执行(适合公开共享目录) -
mkdir -m 700 mypriv→ 仅属主可读写执行(适合敏感配置或临时工作区) -
mkdir -m 775 teamproj→ 所有者和组完全控制,其他人只读+执行(适合协作开发目录) -
mkdir -m 770 securegroup→ 所有者和组可读写执行,其他人无任何权限(组内严格隔离)
结合 -p 创建带权限的嵌套目录
-m 和 -p 可同时使用,但注意:只有**最末级目录**获得指定权限,上级父目录仍按 umask 创建(除非上级也显式加 -m)。
- 示例:
mkdir -p -m 750 /var/log/myapp→/var/log/myapp权限为750,而/var和/var/log按系统 umask(如022)生成,通常是755 - 若需整条路径统一权限,需分步创建或配合
chmod -R(不推荐用于系统路径)
验证是否生效
创建后立刻用 ls -ld 查看目录自身权限(-d 确保显示目录本身而非内容):
$ mkdir -m 700 secret_dir$ ls -ld secret_dir
输出应类似:drwx------ 2 user user 4096 May 1 11:30 secret_dir
如果看到 rwx 以外的权限(如 r-x),说明 -m 未生效——检查是否拼写错误(如写成 -M)、权限值超出范围(如 888),或当前用户对父目录无写权限。











