文档首页> 互联网资讯> Linux创建用户全攻略:权限与安全并重

Linux创建用户全攻略:权限与安全并重

发布时间:2026-09-01 22:26       

linux创建用户

在 Linux 系统中,创建用户是服务器管理、项目部署、权限隔离和日常运维中的基础操作。通过创建不同用户,可以让不同人员或程序使用独立身份登录系统,从而避免所有操作都集中在 root 用户下,提升系统安全性和可维护性。


一、创建用户前的准备

在创建 Linux 用户之前,建议先确认当前用户是否具备管理员权限。大多数操作需要使用 sudo 执行。

whoami
id

如果当前用户不是管理员,可以使用 sudo 提权:

sudo -v

如果系统提示输入密码,说明当前用户具备 sudo 权限。


二、使用 useradd 创建用户

useradd 是 Linux 中常用的底层用户创建命令,适用于大多数发行版,例如 Ubuntu、Debian、CentOS、RHEL、Rocky Linux、AlmaLinux 等。

1. 创建普通用户

sudo useradd 用户名

例如创建用户 zhangsan

sudo useradd zhangsan

不过,这种方式默认可能不会创建用户家目录,也不会自动设置登录密码,因此更推荐使用下面的方式。

2. 创建用户并自动创建家目录

sudo useradd -m 用户名

示例:

sudo useradd -m zhangsan

参数说明:

  • -m:自动创建用户家目录,例如 /home/zhangsan
  • 如果不加 -m,部分系统不会自动创建家目录

3. 创建用户并指定登录 Shell

sudo useradd -m -s /bin/bash 用户名

示例:

sudo useradd -m -s /bin/bash zhangsan

-s 用于指定用户登录时使用的 Shell,常见值包括:

/bin/bash
/bin/sh
/usr/sbin/nologin

如果用户只是用于运行服务,不需要登录,可以设置为:

sudo useradd -r -s /usr/sbin/nologin appuser

三、使用 adduser 创建用户

在 Ubuntu、Debian 等系统中,adduser 是一个更友好的交互式命令,适合新手使用。

sudo adduser 用户名

示例:

sudo adduser zhangsan

执行后,系统会提示你设置密码,并询问用户信息,例如姓名、联系方式等。如果不想填写,可以直接按回车跳过。

相比 useraddadduser 的优点是:

  • 操作更直观
  • 会自动创建家目录
  • 会自动设置密码
  • 会自动复制默认配置文件

四、为用户设置密码

如果使用 useradd 创建用户,通常需要手动设置密码:

sudo passwd 用户名

示例:

sudo passwd zhangsan

系统会提示输入新密码,并再次确认。

设置完成后,可以使用以下命令查看用户信息:

id zhangsan

输出内容通常包括:

  • 用户 UID
  • 用户主组 GID
  • 用户所属附加组

五、查看用户是否创建成功

可以使用以下命令查看用户信息:

id 用户名

示例:

id zhangsan

也可以查看用户家目录:

ls -ld /home/用户名

示例:

ls -ld /home/zhangsan

还可以查看用户对应的账户记录:

getent passwd 用户名

示例:

getent passwd zhangsan

六、给用户添加 sudo 权限

如果希望某个普通用户可以执行管理员命令,可以将其加入管理员组。

Ubuntu / Debian 系统

sudo usermod -aG sudo 用户名

示例:

sudo usermod -aG sudo zhangsan

CentOS / RHEL / Rocky / AlmaLinux 系统

sudo usermod -aG wheel 用户名

示例:

sudo usermod -aG wheel zhangsan

参数说明:

  • usermod:修改用户属性
  • -aG:追加用户到指定附加组
  • sudowheel:管理员组名称

添加完成后,用户重新登录后通常即可使用 sudo


七、创建用户时指定 UID、GID 和家目录

在服务器管理中,有时需要指定用户 ID 或家目录。

1. 指定 UID

sudo useradd -m -u 1200 zhangsan

2. 指定家目录

sudo useradd -m -d /data/users/zhangsan zhangsan

3. 指定主组

sudo useradd -m -g developers zhangsan

4. 同时指定多个附加组

sudo useradd -m -G developers,docker,www-data zhangsan

注意:-G 会覆盖用户已有附加组,而 usermod -aG 更适合后续追加组。


八、创建系统用户

系统用户通常用于运行服务,例如数据库、Web 服务、后台程序等。它们一般不需要登录系统。

sudo useradd -r -s /usr/sbin/nologin appuser

参数说明:

  • -r:创建系统用户
  • -s /usr/sbin/nologin:禁止用户登录

如果系统使用的是 /bin/false,也可以使用:

sudo useradd -r -s /bin/false appuser

九、修改用户属性

创建用户后,可以根据需要修改用户信息。

修改用户家目录

sudo usermod -d /new/home/zhangsan zhangsan

修改登录 Shell

sudo usermod -s /bin/bash zhangsan

修改用户名

sudo usermod -l newname oldname

修改用户主组

sudo usermod -g newgroup username

给用户追加附加组

sudo usermod -aG groupname username

十、删除用户

如果用户不再需要,可以删除用户账号。

1. 只删除用户,保留家目录

sudo userdel 用户名

示例:

sudo userdel zhangsan

2. 删除用户并删除家目录

sudo userdel -r 用户名

示例:

sudo userdel -r zhangsan

在 Ubuntu / Debian 中也可以使用:

sudo deluser 用户名

删除用户并删除家目录:

sudo deluser --remove-home 用户名

删除用户前建议确认该用户是否正在运行进程:

ps -u 用户名

十一、常见问题

1. 提示用户已存在

说明该用户名已经被占用,可以换一个用户名,或查看已有用户:

cat /etc/passwd

也可以查询指定用户:

getent passwd 用户名

2. 家目录不存在

如果创建用户后没有家目录,可以手动创建并授权:

sudo mkdir -p /home/用户名
sudo chown 用户名:用户名 /home/用户名
sudo chmod 755 /home/用户名

3. 用户无法登录

常见原因包括:

  • 密码未设置
  • Shell 被设置为 /usr/sbin/nologin
  • 用户被锁定
  • 登录权限受到 SSH 配置限制

可以检查用户状态:

passwd -S 用户名

解锁用户:

sudo passwd -u 用户名

或使用:

sudo usermod -U 用户名

锁定用户:

sudo passwd -l 用户名

十二、实际示例:创建可 sudo 登录的普通用户

下面是一套常用完整流程:

sudo useradd -m -s /bin/bash zhangsan
sudo passwd zhangsan
sudo usermod -aG sudo zhangsan
id zhangsan

如果系统是 CentOS / RHEL / Rocky / AlmaLinux,则使用:

sudo useradd -m -s /bin/bash zhangsan
sudo passwd zhangsan
sudo usermod -aG wheel zhangsan
id zhangsan

这样创建出来的用户具备以下特点:

  • 拥有独立家目录
  • 可以使用 Bash 登录
  • 设置了登录密码
  • 具备管理员权限
  • 适合日常运维使用

十三、安全建议

创建 Linux 用户时,建议遵循以下原则:

  1. 不要直接使用 root 进行日常操作
  2. 普通用户需要管理员权限时,再加入 sudowheel
  3. 为服务创建专用系统用户,不要使用可登录账号运行服务
  4. 不再使用的用户应及时删除
  5. 对重要用户设置强密码
  6. 定期查看用户列表,避免存在未知账号
  7. 修改用户组时优先使用 -aG,避免覆盖原有组权限

总结

本文介绍了在 Linux 中创建用户的常见方法,包括使用 useraddadduser 创建普通用户、设置密码、查看用户信息、添加 sudo 权限、指定 UID、GID、家目录,以及创建系统用户和删除用户等操作。总体来说,useradd 更适合脚本化和服务器管理,adduser 更适合交互式操作。实际使用时,应根据系统类型和用户需求选择合适的命令,并注意权限控制与账号安全。