Linux创建用户全攻略:权限与安全并重
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
执行后,系统会提示你设置密码,并询问用户信息,例如姓名、联系方式等。如果不想填写,可以直接按回车跳过。
相比 useradd,adduser 的优点是:
- 操作更直观
- 会自动创建家目录
- 会自动设置密码
- 会自动复制默认配置文件
四、为用户设置密码
如果使用 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:追加用户到指定附加组sudo或wheel:管理员组名称
添加完成后,用户重新登录后通常即可使用 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 用户时,建议遵循以下原则:
- 不要直接使用
root进行日常操作 - 普通用户需要管理员权限时,再加入
sudo或wheel组 - 为服务创建专用系统用户,不要使用可登录账号运行服务
- 不再使用的用户应及时删除
- 对重要用户设置强密码
- 定期查看用户列表,避免存在未知账号
- 修改用户组时优先使用
-aG,避免覆盖原有组权限
总结
本文介绍了在 Linux 中创建用户的常见方法,包括使用 useradd 和 adduser 创建普通用户、设置密码、查看用户信息、添加 sudo 权限、指定 UID、GID、家目录,以及创建系统用户和删除用户等操作。总体来说,useradd 更适合脚本化和服务器管理,adduser 更适合交互式操作。实际使用时,应根据系统类型和用户需求选择合适的命令,并注意权限控制与账号安全。