一、用户与用户组基础概念
1. 用户(User)
-
作用:区分不同操作者身份,控制权限与资源访问。
-
分类:
-
超级用户(root):UID为0,拥有最高权限。
-
程序用户:UID范围1~999(系统服务专用,如
mysql
、nginx
)。 -
普通用户:UID≥1000,由管理员创建,权限受限。
-
2. 用户组(Group)
-
作用:简化权限分配,将相同权限的用户集合管理。
-
类型:
-
主组:用户创建时默认所属组,唯一且与用户名相同。
-
附加组:用户可加入多个附加组,继承组权限。
-
二、用户组管理命令
1. groupadd
:创建用户组
groupadd dev # 创建默认组 groupadd -g 1001 dev # 指定GID groupadd -r sys_group # 创建系统组(GID<1000)
2. groupmod
:修改用户组
groupmod -n developers dev # 修改组名 groupmod -g 2000 dev # 修改GID
3. groupdel
:删除用户组
groupdel dev # 删除空组(若组非空需先移除用户)
三、用户管理命令
1. useradd
:创建用户
useradd user1 # 基础创建 useradd -u 1200 -g dev -G ops user2 # 指定UID、主组和附加组 useradd -s /sbin/nologin app_user # 禁止登录系统
2. usermod
:修改用户属性
usermod -l new_user old_user # 修改用户名 usermod -aG docker user1 # 追加附加组(保留原组) usermod -L user1 # 锁定账户 usermod -U user1 # 解锁账户
3. userdel
:删除用户
userdel user1 # 删除用户,保留家目录 userdel -r user1 # 彻底删除用户及家目录
4. passwd
:密码管理
passwd user1 # 设置用户密码 passwd -d user1 # 清空密码(需配置允许无密码登录) passwd -x 30 -w 7 user1 # 设置密码30天后过期,提前7天警告
5. id
与su
:用户信息查看与切换
id user1 # 查看用户UID、GID及所属组 su - user1 # 切换用户并加载环境变量 su -c "ls /root" user1 # 以user1身份执行单条命令
四、实战案例
1. 创建受限用户
需求:创建用户lisi
,UID为1200,注释为“hruser lisi”,禁止登录系统,主组为lisi
,附加组为gzhr
。
groupadd gzhr useradd -u 1200 -g lisi -G gzhr -c "hruser lisi" -s /sbin/nologin lisi
2. 用户权限变更
需求:用户lisi
需临时接管wangwu
的工作,加入shhr
组,并更新注释为“gzhr shhr user”。
usermod -aG shhr -c "gzhr shhr user" lisi
3. 账户锁定与解锁
需求:用户wangwu
休假期间锁定账户,返岗后解锁并设置密码。
usermod -L wangwu # 锁定账户 usermod -U wangwu # 解锁账户(需先设置密码) passwd wangwu # 设置新密码
五、关键配置文件解析
1. /etc/passwd
存储用户基本信息,每行格式:
用户名:密码占位符(x):UID:GID:描述:家目录:登录Shell
示例:
lisi:x:1200:1200:hruser lisi:/home/lisi:/sbin/nologin
2. /etc/shadow
存储加密密码及策略,每行格式:
用户名:加密密码:最后修改密码天数:最小密码有效期:最大密码有效期:警告期:宽限期:失效时间:保留字段
3. /etc/group
存储组信息,每行格式:
组名:组密码占位符(x):GID:组成员列表
4. /etc/gshadow
存储组密码及管理信息,格式类似shadow
。
六、注意事项与最佳实践
-
安全建议:
-
禁止
root
远程登录,使用普通用户+sudo
提权。 -
定期检查
/etc/passwd
和/etc/shadow
,删除无用账户。
-
-
权限管理:
-
用户主组唯一,附加组按需分配。
-
程序用户(如
nginx
)禁止登录Shell。
-
-
备份与恢复:
-
修改用户/组前备份配置文件:
cp /etc/passwd /etc/passwd.bak cp /etc/group /etc/group.bak
-
附:常用命令速查表
操作 | 命令示例 | 说明 |
---|---|---|
创建用户 | useradd -u 1200 -g dev user1 | 指定UID和主组 |
修改用户组 | usermod -aG ops user1 | 追加附加组 |
删除用户 | userdel -r user1 | 彻底删除用户及家目录 |
设置密码策略 | passwd -x 30 -w 7 user1 | 密码30天后过期,提前7天警告 |
查看用户信息 | id user1 | 显示UID、GID及所属组 |