首页/系统/Linux 运维命令速查//etc/skel 新用户家目录模板

/etc/skel 新用户家目录模板

/etc/skel 里的文件在 useradd -m 时被复制进新家目录,用于统一默认 shell 环境、别名与目录结构;改后只影响新用户。

Linux 运维命令速查系统更新于 2026-10-13

/etc/skel 是什么

/etc/skel 是新用户家目录的模板目录:执行 useradd -m 时,目录里的文件会被复制到新家目录,用来统一默认的 shell 环境、别名与目录结构。它决定「新同事第一次登录时会看到什么」,改它只影响之后创建的用户,已存在的账号不会自动更新。

基本信息

用途定制新用户默认家目录内容
语法编辑 /etc/skel 目录,配合 useradd -m 与 -k 使用
相关组件shadow-utils 与各发行版的目录约定
生效范围仅对之后创建的用户生效

典型使用场景

  • 统一团队的 shell 别名、提示符与环境变量
  • 新建用户时自动带上常用目录结构
  • 统一 umask 与默认编辑器等个人偏好
  • 迁移与重建环境时保持一致的初始配置
  • 演示环境里让新账号即刻可用
  • 审计新账号默认配置是否符合安全基线

常用示例

常用示例
ls -la /etc/skel                     # 查看模板内容
echo 'umask 027' >> /etc/skel/.bash_profile   # 统一默认 umask
echo 'alias ll="ls -alh"' >> /etc/skel/.bashrc
mkdir -p /etc/skel/.ssh && chmod 700 /etc/skel/.ssh   # 需要时准备目录
sudo useradd -m -k /etc/skel deploy   # 按模板创建用户
sudo ls -la /home/deploy | head       # 核对复制结果
diff -r /etc/skel /home/deploy 2>/dev/null | head   # 对比模板与家目录

模板中的常见文件

文件作用注意点
/etc/skel/.bashrc交互式 shell 配置别名与提示符写在这里
/etc/skel/.bash_profile登录 shell 配置umask 写这里更稳妥
/etc/skel/.ssh/密钥目录权限必须严格,模板要保持干净
/etc/default/useradd默认参数SKEL 路径在此配置
/etc/login.defs密码与账号策略影响新用户的默认有效期
已有用户的配置不会随 /etc/skel 的变化而更新:模板改动只在下次创建用户时生效,老用户需要另行推送或手工同步。
往模板里放密钥、令牌这类敏感文件,会被复制到每个新账号的家目录,属于典型的凭据扩散风险;模板应保持最小与干净。
umask 写在 .bashrc 里对非交互 shell 不一定生效,登录脚本的选择(.bash_profile 与 .profile)随发行版不同,改动前先确认目标系统的约定。
模板里也可以预置常用目录结构,让新账号登录即可顺手使用;但不要塞入大量示例文件,模板越小越容易长期维护。

易错点

  • 改完 /etc/skel 就期待已有用户生效:老账号不会自动更新,需要单独推送
  • 把敏感文件放进模板:凭据被复制到每个新账号,扩散范围不可控
  • umask 只写在 .bashrc:非交互场景不生效,权限策略形同虚设
  • 忽略发行版差异:登录脚本命名与加载顺序不同,配置可能永远不被读取

数据来源与参考

  • man 8 useradd(-k/--skel)
  • man 5 login.defs

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌