创建新用户并指定家目录必须同时使用 -d 和 -m 选项:-d 设定路径,-m 确保目录实际创建;仅 -d 不建目录,仅 -m 按默认路径(如 /home/用户名)建目录。

创建新用户并指定家目录,核心是用 -d 和 -m 两个选项配合——-d 设定路径,-m 确保目录被实际创建。
必须同时使用 -d 和 -m
只用 -d /path/to/home 不会自动建目录;只用 -m 会按默认路径(通常是 /home/用户名)建目录。要自定义位置且成功生成,命令中必须同时包含两者:
-
sudo useradd -d /data/users/alice -m alice→ 家目录建在/data/users/alice,权限设为 700,属主属组均为 alice - 若省略
-m,即使写了-d,目录也不会被创建,后续登录会失败或进入根目录
家目录内容要靠 -k 或手动初始化
仅加 -m 会创建空目录。如需复制系统骨架文件(如 .bashrc、.profile),有两种方式:
- 用
-k /etc/skel指定骨架目录(推荐):sudo useradd -d /opt/dev/john -m -k /etc/skel john - 或创建后手动复制:
sudo cp -r /etc/skel/. /opt/dev/john/ && sudo chown -R john:john /opt/dev/john
注意家目录父路径的权限和存在性
useradd 不会自动创建多级父目录。例如指定 -d /srv/webapp/user1 时,需确保 /srv/webapp 已存在且 root 可写:
- 先执行:
sudo mkdir -p /srv/webapp && sudo chmod 755 /srv/webapp - 再运行 useradd 命令,否则报错 “cannot create directory”
创建后别忘了设密码和登录 shell
useradd 默认不设密码,也不保证 shell 可用(某些发行版默认用 /bin/sh,可能无 tab 补全):
- 设密码:
sudo passwd alice - 指定常用 shell(如 bash):
sudo usermod -s /bin/bash alice,或在创建时直接加-s /bin/bash











