/etc/skel目录权限不受当前用户umask影响,useradd以root身份复制其内容,文件权限严格继承skel中预设的mode值,故必须显式设置合理权限并定期审计。

在批量创建用户时,/etc/skel 中的文件权限不会被当前登录用户的 umask 覆盖——因为 useradd -m 复制 /etc/skel 是以 root 身份执行的,它不继承普通用户的 umask,而是严格按 /etc/skel 内文件本身的权限位(mode)复制,再结合 useradd 的内部逻辑和系统默认行为决定最终权限。
skel 文件权限本身才是关键
/etc/skel 是静态模板目录,它的内容(如 .bashrc、.profile)必须预先设置好合理权限。例如:
-
chmod 644 /etc/skel/.bashrc→ 复制后新用户家目录中仍是-rw-r--r-- -
chmod 755 /etc/skel/.local→ 复制后是drwxr-xr-x - 若某文件在 skel 中是
600,复制后就是-rw-------,无论当前 umask 是多少
真正影响家目录权限的是 useradd 默认配置
新建家目录(/home/username)本身的权限由 useradd 控制,与 skel 内容无关。它取决于:
-
/etc/login.defs中的DIR_MODE(如DIR_MODE 0751),这是家目录创建时的初始权限 -
/etc/default/useradd中的HOME和CREATE_HOME设置是否启用 - 如果未设
DIR_MODE,则 fallback 到0755或受系统 umask 影响(但这是 root 进程的 umask,不是你的)
如何确保 skel 模版“不被干扰”
所谓“不受当前 umask 干扰”,本质是避免人为误操作破坏 skel 权限。需做到:
- 所有
/etc/skel下文件统一用chmod显式设权,不依赖编辑器或 cp 命令的默认行为 - 禁止在 skel 中放可执行脚本(除非明确需要),防止因
x位引发安全风险 - 批量创建前运行
ls -l /etc/skel核对权限,比如.bashrc应为-rw-r--r--,而非-rw-------(太严)或-rw-rw-rw-(太松) - 更新 skel 后,务必同步检查
/etc/skel目录自身权限:chmod 755 /etc/skel,否则useradd可能拒绝读取
验证方式简单直接
建一个测试用户,立刻检查其家目录中 skel 文件的实际权限:
useradd -m -s /bin/bash testcheck-
ls -l /home/testcheck/.bashrc—— 应与/etc/skel/.bashrc完全一致 -
ls -ld /home/testcheck—— 应符合DIR_MODE或默认值,而非你当前 shell 的 umask

















