在 Linux 多用户、多任务环境中,用户与组的管理非常关键。本篇解析了 Linux 用户管理的概念、命令与配置文件,让你轻松应对添加、删除、修改用户及组相关操作。
一、Linux 用户管理概述
¶1.用户与组的基本概念
Linux 系统采用多用户、多任务的设计,每个用户拥有独立的权限与资源配额。用户之间通过分组(Group)来定义共享或隔离的权限:
用户(User): 指在系统中拥有各自身份信息的账号。组(Group): 多个用户可隶属于同一个组,组定义了某些资源或操作的共享范围。
典型场景:
-
不同用户共同参与同一项目,需要使用同组权限共享文件。
-
系统管理员(root)是特权用户,几乎拥有对系统的一切控制权。
-
系统会默认生成一些假用户,例如 Nginx,是安装软件时自动创建的用户,仅用于完成其份内的工作:

¶2.常见配置文件
Linux 的用户信息主要分布在如下几个文件:
-
/etc/passwd- 记录系统中所有用户的基本信息,如用户名、UID(用户 ID)、GID(用户组 ID)等。
- 每一行代表一个用户,字段间用冒号
:分割。
-
/etc/shadow- 储存用户的加密密码以及密码过期策略等更敏感的信息。
- 只有 root 用户或具备特权的用户才可读取。
-
/etc/group- 定义系统中的各个组及其成员列表。
-
/etc/gshadow- 类似
/etc/shadow,存放组密码及更详细的组管理信息。
- 类似
二、常用用户管理命令
¶1.useradd、passwd、userdel 等
¶useradd
用于在系统中创建新用户账号。例如:
1 | useradd `testuser` |
可选常见参数:
-d指定用户家目录,例如-d /home/testuser。-m自动创建家目录。-M不创建用户的家目录。-s指定用户登录 shell,如-s /bin/bash,设置/sbin/nologin说明用户是无法登录的。-g设置用户所属初始组,-G设置附加组(需要有这个组才行)。-c设置注释。-u设置 uid(1000 开始)。
¶passwd
为用户设置或修改密码:
1 | passwd `testuser` |
若当前用户有权限或是 root,则可以随时更改指定用户的密码。
¶userdel
用于删除用户账号,常用方式:
1 | userdel `testuser` |
若要同时移除其家目录,可以加 -r 选项:
userdel -r testuser
但一般建议直接注释掉 /etc/passwd 对应的行,而不是直接删除。
¶2.usermod
usermod 修改已存在且未登录的用户的属性,如用户名、组、家目录等:
-l:修改登录名-g:修改初始组-G:修改或追加附加组-d:更换家目录,如同时使用-m可将原家目录内容迁移到新位置-s:更改用户登录 shell-L/-U:锁定/解锁用户密码
示例:
1 | usermod -G `developers` -d `/home/newuser` `olduser` |
这条命令将 olduser 的家目录改为 /home/newuser 并把他加入 developers 组。
¶3. 其他查看命令


三、组管理命令
¶1.groupadd、groupdel、groupmod
-
groupadd新建组:groupadd testgroup
可以指定组号:
1
groupadd -g 组号 组名
-
groupdel删除组:groupdel testgroup -
groupmod修改组名或 GID:groupmod -n newgroupname oldgroupname
¶2. 用户与组的关联操作
-
将用户添加到附加组:
1
usermod -aG `groupname` `username`
其中 -a 表示追加,避免覆盖用户原有附加组。
-
移除用户与某组的关联:需先编辑
/etc/group或使用一些辅助脚本(如gpasswd或手动修改组条目)。
四、UID、GID 与权限关系
¶1.UID(用户ID)
- 每个用户在
/etc/passwd中有唯一的 UID,root 用户 UID 通常为 0。 - 一些系统服务或伪用户 UID 可能小于 1000(或 500),普通用户 UID 大多从 1000(或 500)开始。
¶2.GID(组ID)
- 记录在
/etc/group中,每个组有唯一的 GID。 - /etc/passwd 中的 GID 字段指示该用户的初始组,附加组则在 /etc/group 里列出。
¶3.权限模型
Linux 文件权限基于 User/Group/Other 三个主体,分别有读(r)、写(w)、执行(x)三种权限位:
- 若当前访问者的 UID 与文件所有者相同,系统使用所有者权限。
- 否则若访问者所在组与文件组相同,则使用组权限。
- 否则使用其他权限。
五、账号安全及sudo权限
¶1.密码安全
- 修改密码策略(如密码有效期、复杂度)主要在
/etc/shadow里配置或借助chage命令。 - 建议使用
passwd -n、-x等选项强制密码最短/最长使用天数,或通过chage进行交互配置。
¶2.锁定与解锁用户
usermod -L username可锁定用户,-U可解锁。- 被锁定后,该用户密码无效,无法登录系统。
¶3.sudoers
-
sudo允许普通用户在不知 root 密码的情况下以特权运行命令。 -
sudo 配置文件位于
/etc/sudoers,或在/etc/sudoers.d/下。 -
可通过
visudo进行编辑,典型格式:1
username ALL=(ALL:ALL) ALL
表示该用户可在所有主机、以所有用户和组身份,执行所有命令。

- 也可以通过这行代码添加
sudoer:usermod -aG wheel 用户名
六、系统文件详解
¶1./etc/passwd 举例
/etc/passwd 是存储用户信息文件,一个典型的 /etc/passwd 行:
1 | testuser:x:1001:1001:用户注释:/home/testuser:/bin/bash |
-
用户名:
testuser -
密码位:
x(表示真正密码在/etc/shadow中) -
UID:1001,如身份证号
- UID 为 0 是超级用户
- 系统用户 UID 为 1-999,Linux 安装的服务程序都会创建独有的用户负责运行
- 普通用户 UID 从 1000 开始,由管理员创建,最大值 1000-60000 范围
- CentOS6 创建普通用户从 500 开始
-
GID:1001,group identify,如户口本的家庭编号
-
Gecos 信息:留空
-
家目录:
/home/testuser -
登录 Shell:
/bin/bash,这是用户解释器,默认都是 bash,若是禁止用户登录机器,改为/sbin/nologin即可(ssh 连接的时候会报错)

¶2./etc/shadow 举例
/etc/shadow是存储用户密码信息的文件,该文件默认权限为 0,即任何其他用户都不得查看,常见字段如:
1 | testuser:$6$4kTxu1…:19103:0:99999:7::: |
$6$表示使用 SHA-512 加密- 19103 表示最后一次修改密码的日期(自 Epoch 起的天数)
- 0 / 99999 / 7 等表示密码最短/最长使用期限、过期天数等策略

¶3. /etc/group
存储用户组信息

¶4. /etc/gshadow
存储用户组密码信息,在大公司,用户和组数量很大的情况下,需要制定复杂的权限管理,届时会用到组密码

¶5. /etc/skel
skel 是 skeleton 的缩写,此目录的作用是在建立新用户时,用于初始化用户根目录,系统会把此目录下的所有文件、目录都复制到新建用户的根目录,并且将用户属主与用户组调整为与此根目录相同

如果之前创建用户的时候没有创建家目录,可以使用 cp -r /etc/skel/ /home/用户名 来创建。
¶6. set 和 env 命令
Windows 的用户变量查询相当于 Linux 中的 env 命令,而系统变量查询相当于 Linux 中的 set 命令。


PS1 命令行样式修改(只在当前生效)

1 | \d :代表日期,格式为weekday month date,例如:"Mon Aug1" |
set 设置变量
unset 取消设置变量
七、常用实例场景
¶1.新建用户并指定家目录、Shell
1 | useradd -m -d `/home/jack` -s `/bin/zsh` `jack` |
-m:自动创建家目录-d:指定家目录路径-s:指定默认shell
¶2.为用户指定初始组和附加组
1 | useradd -g `devgroup` -G `testgroup,adm` `alex` |
初始组为 devgroup,附加组有 testgroup 和 adm。
¶3.将用户移至新家目录
1 | usermod -d `/home/newjack` -m `jack` |
d:更新家目录位置-m:迁移原家目录内容到新位置
¶4.批量删除用户
1 | for u in `cat users.txt`; do |
通过简单脚本循环删除 users.txt 列表中的所有用户,并 -r 同时删除家目录。
¶5. 用户互传数据
使用 scp 源目录 目标目录 可以实现将远程目录传到自己目录或者将自己目录传到远程中,需要注意的是我们需要输入对方密码,如果要发送文件夹需要加 -r 指令。并且网络需要都改为桥接,需要保证在同一个网段下才能互传,如果之前设置了静态 IP 需要设置桥接后重新修改为动态。
- 本文标题:Linux 用户管理
- 本文作者:Chen Kai
- 创建时间:2025-02-10 00:00:00
- 本文链接:https://www.chenk.top/Linux 用户管理/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!