在Linux系统中,用户和用户组是管理文件权限、系统资源访问和安全性的核心机制,合理添加和管理用户及用户组,既能保障系统安全,又能实现多用户协同工作,本文将详细介绍Linux环境下添加用户和用户组的操作方法、常用参数及注意事项。
用户组管理基础
用户组(Group)是用户的集合,通过将用户划分到不同组,可以简化权限管理,将开发人员加入devops
组,统一授予目录读写权限,而无需为每个用户单独设置,Linux用户组分为两类:主要组(Primary Group)和附加组(Supplementary Group),每个用户有且仅有一个主要组,通常与用户名同名,可同时属于多个附加组。
添加用户组
使用groupadd
命令可创建新用户组,基本语法为:
groupadd [选项] 组名
常用参数如下:
参数 | 说明 | 示例 |
---|---|---|
-g, --gid GID |
指定组ID(GID),需唯一,默认系统分配 | groupadd -g 1001 devops |
-r, --system |
创建系统组,GID小于999(系统保留范围) | groupadd -r systemd-coredump |
-f, --force |
组已存在时提示而非报错 | groupadd -f testgroup |
示例:
创建普通用户组developers
:
groupadd developers
创建系统组syslog
(GID自动分配为系统保留值):
groupadd -r syslog
修改与删除用户组
- 修改组信息:使用
groupmod
命令,可重命名组或修改GID:# 修改组名 groupmod -n newgroup oldgroup # 修改GID groupmod -g 1002 developers
- 删除用户组:使用
groupdel
命令,若组内仍有用户,需先移除用户或强制删除(可能导致用户无有效组):groupdel developers
用户管理操作
用户(User)是系统的操作主体,每个用户拥有唯一的UID(用户ID)和主要组,添加用户时,系统会默认创建与用户名同名的家目录(/home/用户名
),并设置基本配置文件。
添加用户
使用useradd
命令(或adduser
,后者为交互式脚本),基本语法为:
useradd [选项] 用户名
常用参数如下:
参数 | 说明 | 示例 |
---|---|---|
-u, --uid UID |
指定UID,需唯一(普通用户UID≥1000,系统用户<1000) | useradd -u 1001 zhangsan |
-g, --gid 组名 |
指定主要组,若组不存在需先创建 | useradd -g developers zhangsan |
-G, --groups 组名 |
指定附加组,多个组用逗号分隔 | useradd -G sudo,devops zhangsan |
-d, --home-dir 目录 |
指定家目录路径,默认/home/用户名 |
useradd -d /data/projects zhangsan |
-m, --create-home |
自动创建家目录(默认行为,-d 未指定时生效) |
useradd -m lisi |
-s, --shell Shell |
指定登录Shell,如/bin/bash (默认)、/bin/false (禁止登录) |
useradd -s /bin/bash zhangsan |
-c, --comment 注释 |
添加用户注释信息(如真实姓名) | useradd -c "Zhang San" zhangsan |
-r, --system |
创建系统用户,无家目录、Shell,UID<1000 | useradd -r nginx |
示例:
创建普通用户zhangsan
,指定主要组developers
,附加组sudo
,家目录/home/zhangsan
,Shell为/bin/bash
:
useradd -m -s /bin/bash -g developers -G sudo zhangsan
创建系统用户mysql
,无登录权限,UID为998:
useradd -r -u 998 -s /bin/false mysql
设置用户密码
新建用户默认无密码或密码为空,需通过passwd
命令设置:
# 为当前用户或指定用户设置密码 passwd zhangsan # 强制用户下次登录修改密码 passwd --expire zhangsan
输入密码时不会显示字符,需连续输入两次并确认。
修改用户信息
使用usermod
命令可修改用户属性(需root权限):
# 修改用户名 usermod -l newname oldname # 修改主要组 usermod -g newgroup zhangsan # 添加/修改附加组(覆盖原附加组) usermod -G docker,webdev zhangsan # 追加附加组(保留原附加组) usermod -aG docker zhangsan # 锁定/解锁用户账户 usermod -L zhangsan # 锁定(无法登录) usermod -U zhangsan # 解锁
删除用户
使用userdel
命令,可选择性删除家目录和邮件文件:
# 仅删除用户,保留家目录 userdel zhangsan # 删除用户及家目录、邮件文件 userdel -r zhangsan
注意事项
- UID与GID冲突:手动指定UID/GID时,需确保系统中唯一,可通过
cat /etc/passwd | cut -d: -f3
查看已用UID。 - 系统用户与普通用户:系统用户(如
nginx
、mysql
)用于服务进程,禁止登录;普通用户用于日常操作,需分配有效Shell。 - 家目录权限:默认家目录权限为
700
(仅用户可访问),若需共享目录,可通过chmod
或设置SGID位实现组内共享。
相关问答FAQs
Q1:如何查看系统中所有用户和用户组?
A:可通过以下命令查看:
- 查看所有用户:
cat /etc/passwd | cut -d: -f1
(显示用户名)或getent passwd | cut -d: -f1
(包含系统用户); - 查看所有用户组:
cat /etc/group | cut -d: -f1
或getent group | cut -d: -f1
; - 查看用户所属组:
groups 用户名
或id -Gn 用户名
。
Q2:添加用户时如何禁止其登录系统?
A:可通过指定无效Shell实现,例如使用/bin/false
或/sbin/nologin
:
useradd -s /sbin/nologin backupuser
该用户可执行命令(如通过sudo
或服务调用),但无法通过SSH、控制台等直接登录。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/30906.html