Linux系统创建新普通用户的详细操作教程
Linux中创建普通用户需注意:useradd命令必须加-m参数创建家目录并指定-s bin bash;新用户默认无sudo权限,需手动加入sudo或wheel组;创建后必须用passwd设置密码,否则无法登录。adduser脚本可自动完成上述操作,但仅适用于Debian Ubuntu系统。
在 Linux 系统中创建普通用户,听起来很简单,但实际操作中容易踩坑。虽然使用 useradd -m 或 adduser 命令可以快速完成,可一旦遗漏 -m 参数、忘记设置密码、或未添加组权限,用户很可能无法登录,甚至无法执行基本的管理命令。下面将这几个关键步骤逐一拆解,帮助新手避免常见错误。

useradd 创建用户必须带 -m 参数
很多新手直接运行 sudo useradd username,结果切换过去发现是个空壳环境,甚至执行 su - username 时直接报错 “No directory, logging in with HOME=/”。问题在于默认情况下不会创建家目录(/home/username),而且 shell 可能被设置为 /bin/sh 或 /sbin/nologin,导致无法进行交互操作。
正确的命令写法是:
sudo useradd -m -s /bin/bash username
其中 -m 强制创建家目录,-s /bin/bash 显式指定可交互的 shell。一些精简系统(如 Alpine、某些容器镜像)连 -m 都不默认启用,必须手动添加该参数。
- 不加
-m:家目录不存在,su -失败,图形登录被拒绝,~路径解析为/ - 不指定
-s:可能继承系统默认 shell(如/bin/sh),缺少历史记录、命令补全等交互功能 - UID/GID 一般无需手动设置,系统会自动分配;除非有集群 UID 对齐等特殊需求
adduser 更适合新手,但只在 Debian/Ubuntu 系统预装
adduser 是一个 Perl 脚本封装,它会自动调用 useradd 并复制 /etc/skel/ 下的配置文件(如 .bashrc)、设置好权限、引导输入密码——全程交互提示,容错率较高。
执行命令:
sudo adduser username
它会依次询问密码、全名、房间号等信息,除密码外均可回车跳过。完成后家目录已就绪,直接执行 su - username 即可进入。
- CentOS/RHEL/Fedora 默认不带
adduser,即使安装了也只是一个符号链接指向useradd,不具备交互功能 - 如果在 Ubuntu 上使用
useradd但忘了加-m,后续补充mkdir /home/username && cp -r /etc/skel/. /home/username很容易遗漏权限修复 adduser不支持批量或脚本化操作,适合单次、人工创建用户
新用户没 sudo 权限?得手动加进 sudo 或 wheel 组
刚创建的用户默认没有任何管理员权限。运行 sudo ls 会提示 “username is not in the sudoers file”。这不是密码错误,而是该用户尚未被授权。
根据发行版选择对应命令:
- Debian/Ubuntu:
sudo usermod -aG sudo username - CentOS/RHEL/Fedora:
sudo usermod -aG wheel username
注意 -aG 中的 -a(append)不可省略——漏掉它就会覆盖原有组,用户可能被踢出 users 或其他必要组。
验证是否生效:执行 groups username,输出中应包含 sudo 或 wheel;切换用户后运行 sudo -l 可查看允许执行的命令列表。
密码设置和验证环节最容易被跳过
通过 useradd 创建的用户,其密码字段在 /etc/shadow 中显示为 * 或 !,代表“锁定”或“无密码”,根本无法登录。必须显式执行:
sudo passwd username
输入两次密码即可完成设置。此时密码哈希才会写入 /etc/shadow。
adduser会在创建流程中自动引导设置密码,因此这一步不会遗漏- 如果使用
sudo passwd -d username清空密码,该账户将无法通过密码登录(除非配置了 SSH 密钥) - 验证登录最简单的方式:执行
su - username→ 输入密码 → 成功进入即表示正常;运行whoami应返回对应的用户名
真正棘手的是那些“看起来创建成功但无法登录”的情况——多数问题出在缺少 -m、未执行 passwd、或 shell 被设置为 /sbin/nologin 上。不必急于重装系统,先查看 getent passwd username 和 sudo cat /etc/shadow | grep username 这两行输出,问题往往一目了然。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
Win10应用商店提示我们这边出了点问题解决方法
当Win10应用商店提示“我们这边出了点问题”时,可通过三步修复:第一步运行wsreset exe清除应用商店缓存,第二步在设置中重置MicrosoftStore应用,第三步以管理员身份打开PowerShell执行命令重新注册商店组件。按顺序操作,通常能解决该问题。
CentOS从零开始安装最新版Docker的完整详细操作教程
在CentOS上安装最新版DockerCE,需要先确认系统版本(推荐使用CentOSStream9 10),然后使用dnf添加阿里云源以加速下载,列出可用版本后指定安装(如docker-ce-25 0 0),同时安装containerd io,并配置daemon json设置国内镜像源,从而有效避免默认仓库版本滞后或安装失败,确保成功。
Linux操作系统中查看CPU主频实时动态的详细方法
Linux查看CPU实时主频应使用 sys scaling_cur_freq,该接口直接输出每核当前频率(kHz),轻量无延迟且无需root。而 proc cpuinfo的cpuMHz存在缓存延迟,无法捕捉毫秒级跳变,不适用于实时监控。
Linux系统创建新普通用户的详细操作教程
Linux中创建普通用户需注意:useradd命令必须加-m参数创建家目录并指定-s bin bash;新用户默认无sudo权限,需手动加入sudo或wheel组;创建后必须用passwd设置密码,否则无法登录。adduser脚本可自动完成上述操作,但仅适用于Debian Ubuntu系统。
CentOS 7系统修改DNS地址的完整操作步骤与注意事项
CentOS7中要持久修改DNS,需要编辑网卡配置文件ifcfg,添加DNS1和DNS2后重启network服务。若NetworkManager已启用,则需在配置文件中设置dns=none,以防止其自动覆盖。注意:直接修改 etc resolv conf仅临时生效,重启服务后会被还原。采用此方法可确保DNS配置永久生效。
- 热门数据榜
相关攻略
2026-08-05 18:52
2026-08-05 18:52
2026-08-05 18:52
2026-08-05 18:51
2026-08-05 18:51
2026-08-05 18:51
2026-08-05 18:50
2026-08-05 18:50
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

