在Linux最小安装环境中,系统默认仅包含必要的核心组件,通常不预装图形界面,所有操作均通过命令行完成,新建用户是系统管理的基础操作,既能避免直接使用root用户带来的安全风险,又能实现权限精细化管控,本文将详细讲解Linux最小安装环境下新建用户的完整流程,包括用户/组概念、常用命令、权限配置及安全设置等内容。
理解Linux用户与组的基本概念
在Linux系统中,用户是系统资源的访问主体,组则是用户的集合,用于简化权限管理,Linux通过用户ID(UID)和组ID(GID)标识用户和组,其中UID为0的特殊用户是root(超级用户),拥有系统最高权限,最小安装环境下,默认仅存在root用户,新建普通用户需遵循以下原则:
- 普通用户:日常操作使用,权限受限,需通过
sudo
提权执行管理命令。 - 系统用户:用于运行特定服务(如www、mail),UID通常小于1000,无登录权限。
- 用户组:每个用户至少属于一个主组(primary group),可加入多个附加组(supplementary groups),便于批量授权。
检查当前用户状态
新建用户前,需确认系统当前用户及组信息,通过以下命令查看:
# 查看所有用户(仅显示用户名) cut -d: -f1 /etc/passwd # 查看所有用户组(仅显示组名) cut -d: -f1 /etc/group # 查看当前登录用户 whoami
/etc/passwd
是用户信息配置文件,每行记录一个用户,格式为:用户名:密码占位符:UID:GID:描述信息:家目录:登录Shell
。/etc/group
是组信息配置文件,格式为:组名:组密码占位符:GID:组成员列表
。
使用useradd
命令新建用户
useradd
是Linux新建用户的核心命令,最小安装环境中需确保该命令已安装(通常默认包含),其常用参数如下表所示:
参数 | 作用 | 示例 |
---|---|---|
-m |
自动创建用户家目录(默认不创建) | useradd -m testuser |
-s |
指定用户登录Shell(如/bin/bash 、/sbin/nologin ) |
useradd -s /bin/bash testuser |
-g |
指定用户主组(需组已存在) | useradd -g developers testuser |
-G |
指定用户附加组(多个组用逗号分隔) | useradd -G sudo,docker testuser |
-u |
指定UID(需唯一,普通用户UID≥1000) | useradd -u 1001 testuser |
-c |
添加用户描述信息 | useradd -c "Test User" testuser |
示例1:新建普通用户(推荐方式)
# 创建用户testuser,家目录为/home/testuser,Shell为/bin/bash,附加组为sudo sudo useradd -m -s /bin/bash -G sudo testuser
执行后,系统会自动创建:
- 家目录:
/home/testuser
(权限为700
,仅用户本人可访问) - 配置文件:
/etc/passwd
(用户记录)、/etc/shadow
(密码哈希)、/etc/group
(组记录)
示例2:新建系统用户(无登录权限)
# 创建系统用户nginx,UID为999,Shell为/sbin/nologin(禁止登录) sudo useradd -r -s /sbin/nologin -u 999 nginx
参数-r
表示创建系统用户,不会自动创建家目录,UID默认从系统预留范围(<1000)分配。
设置用户密码
新建用户后,需手动设置密码,否则无法登录,使用passwd
命令完成:
# 为testuser用户设置密码(需输入两次密码) sudo passwd testuser
密码要求:
- 长度至少8位,建议包含大小写字母、数字及特殊字符。
- 避免使用弱密码(如
123456
、password
)。
密码信息存储在/etc/shadow
文件中,格式为:用户名:密码哈希:最后修改时间:最小密码有效期:最大密码有效期:密码过期警告期:账号非活跃期:账号过期时间
,其中密码哈希使用SHA-512
算法(默认)。
配置用户权限(sudo授权)
普通用户需通过sudo
执行管理命令,避免直接使用root,默认情况下,Ubuntu/Debian系统将用户加入sudo
组即可获得权限,而CentOS/RHEL系统需手动配置。
方法1:将用户加入sudo
组(推荐)
# 将testuser加入sudo组(Ubuntu/Debian系统) sudo usermod -aG sudo testuser # 将testuser加入wheel组(CentOS/RHEL系统) sudo usermod -aG wheel testuser
参数-aG
表示“追加附加组”,避免覆盖原有组。
方法2:编辑sudoers文件(精确控制权限)
若需限制用户执行的命令,可通过visudo
命令编辑/etc/sudoers
文件(需root权限):
sudo visudo
在文件末尾添加以下内容(示例):
# 允许testuser执行所有命令,需输入密码 testuser ALL=(ALL:ALL) ALL # 允许testuser仅执行重启和关机命令,无需密码 testuser ALL=/sbin/reboot,/sbin/shutdown
保存后(Ctrl+O
,Enter
,Ctrl+X
),用户即可通过sudo 命令
执行管理操作。
验证用户创建
切换用户测试
# 切换到testuser用户(需输入密码) su - testuser # 验证当前用户 whoami
若切换成功,提示符会变为testuser@hostname:~$
。
检查用户信息
# 查看testuser的UID、GID、家目录等 id testuser # 查看testuser所属组 groups testuser
输出示例:
uid=1001(testuser) gid=1001(testuser) groups=1001(testuser),27(sudo)
测试sudo权限
# 尝试查看系统内存(普通用户无权限) free -h # 使用sudo提权查看 sudo free -h
若提示输入密码,且成功显示内存信息,则sudo配置正确。
安全配置建议
最小安装环境下,安全尤为重要,建议完成以下配置:
禁用root远程登录
编辑SSH配置文件/etc/ssh/sshd_config
:
sudo vi /etc/ssh/sshd_config
找到PermitRootLogin yes
,改为PermitRootLogin no
,保存后重启SSH服务:
sudo systemctl restart sshd
设置密码策略
使用chage
命令管理密码策略(示例:设置testuser密码每90天过期,提前7天警告):
sudo chage -M 90 -W 7 testuser
查看密码策略:
sudo chage -l testuser
锁定闲置用户
若某用户长期未使用,可锁定其账户(禁止登录):
sudo usermod -L testuser
解锁:
sudo usermod -U testuser
相关问答FAQs
Q1:忘记root密码怎么办?
A:在最小安装环境下,可通过单用户模式重置root密码:
- 重启系统,在GRUB引导界面按
e
进入编辑模式; - 找到以
linux
或linux16
开头的行,在行尾添加rd.break
; - 按
Ctrl+X
进入紧急模式,执行以下命令:mount -o remount,rw /sysroot chroot /sysroot passwd root # 设置新密码 touch /.autorelabel # 修复SELinux上下文(若启用) exit reboot
- 系统重启后,新密码生效。
Q2:如何删除已创建的用户?
A:使用userdel
命令删除用户,推荐参数-r
(同时删除家目录和邮件文件):
# 删除testuser及其家目录 sudo userdel -r testuser # 仅删除用户,保留家目录(适用于重要数据) sudo userdel testuser
若用户正在运行进程,需先终止进程(pkill -u testuser
),或强制删除(userdel -f testuser
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31869.html