Linux 用户和用户组管理详解

文章目录


Linux 用户和用户组管理详解

在 Linux 系统中,用户(user)和用户组(group)的管理是日常运维的重要部分。本篇将详细讲解如何添加和删除用户、用户组,并介绍常见的管理操作。

用户和用户组概念

  • 用户(user):每个登录 Linux 系统的用户都有一个独立的身份。用户不仅可以操作自己的文件,还能基于权限访问其他资源。

  • 用户组(group):用户组是多个用户的集合,组内用户拥有相同的权限。例如,你可以为多个用户分配同一组以便共享某些资源。

添加和删除用户

添加用户

bash 复制代码
adduser username  # 创建新用户

该命令会自动为用户创建主目录,并生成一些初始化文件。
示例

bash 复制代码
adduser test1
passwd test1# 设置 test1 用户密码

删除用户

bash 复制代码
userdel username  # 删除用户

注意 :使用 userdel 仅删除用户,用户的主目录和文件仍会保留。若要删除用户并同时删除其主目录,使用以下命令:

bash 复制代码
userdel -r username  # 删除用户及其主目录

用户组管理

添加用户组

bash 复制代码
groupadd groupname  # 创建新用户组

示例

bash 复制代码
groupadd test2 # 创建名为 test2 的用户组

删除用户组

bash 复制代码
groupdel groupname  # 删除用户组
groupdel test2 # 删除 test2 用户组

将用户加入用户组

你可以在创建用户时将其分配到一个特定用户组:

bash 复制代码
useradd -g groupname username

示例

bash 复制代码
useradd -g test2 test2   # 将 test1 用户加入 test2 组

也可以在用户已存在时,将其加入某个组:

bash 复制代码
usermod -aG groupname username

-aG 参数保证添加组而不移除其他用户组。

注意 :不要使用 usermod -G,因为这会删除用户原有的组。

禁用和启用用户

临时禁用用户

通过在 /etc/shadow 文件中修改用户密码字段,可以临时禁用某用户:

bash 复制代码
passwd username -l  # 锁定用户

恢复用户

bash 复制代码
passwd username -u  # 解锁用户

显示用户和组信息

使用以下命令查看用户和组的详细信息:

bash 复制代码
id username  # 显示用户ID、组ID及所属组
cat /etc/passwd  # 查看用户信息
cat /etc/group  # 查看组信息

高级用户管理

批量删除组内用户

你可以使用以下命令从用户组中移除特定用户:

bash 复制代码
gpasswd -d username groupname  # 将用户从组中删除

示例

bash 复制代码
gpasswd -d test1  test2  # 将 test1 用户从 test2 组中移除

配置 sudo 权限

要允许某组用户无密码执行 sudo 命令,可以在 /etc/sudoers.d/ 目录下创建文件,内容如下:

bash 复制代码
%groupname ALL=(ALL) NOPASSWD: ALL

示例

bash 复制代码
%devteam ALL=(ALL) NOPASSWD: ALL

这样,devteam 组的所有用户都可以无密码执行 sudo 操作。

用户和用户组的配置文件

  • /etc/passwd:存放系统中所有用户的基本信息。
  • /etc/shadow:存储用户的加密密码及密码过期时间等信息。
  • /etc/group:存储用户组信息。
  • /etc/gshadow:存储用户组的加密信息。

用户的 UID 和 GID

每个用户都有一个唯一的用户 ID(UID)和组 ID(GID),这些标识用于确定文件系统中的权限。

  • UID:用户 ID,用于标识系统中的用户,通常从 1000 开始分配给普通用户。
  • GID:组 ID,用于标识用户所属的主组。默认情况下,用户的 GID 与其 UID 相同。

查看 UID 和 GID

bash 复制代码
id username

手动指定 UID 或 GID

bash 复制代码
useradd -u 1500 -g 1500 username  # 指定 UID 和 GID

用户密码过期设置

在安全性要求较高的环境中,可以设置用户密码的有效期,以强制定期更新密码。

查看密码有效期

bash 复制代码
chage -l username  # 查看用户密码的过期信息

设置密码有效期

bash 复制代码
chage -M 90 username  # 设置密码有效期为 90 天
chage -E "2024-12-31" username  # 设置用户账号到期时间

创建系统用户

系统用户是用于系统服务和后台进程的用户,通常不允许登录。你可以通过指定 -r 参数来创建系统用户:

bash 复制代码
adduser -r systemuser

限制用户的资源使用

为了防止某个用户占用过多的系统资源,可以设置用户的资源限制。这些限制通过 ulimit 或配置 /etc/security/limits.conf 文件来实现。

修改 limits.conf 示例

bash 复制代码
username soft nproc 1000  # 限制最大进程数为 1000
username hard nproc 2000  # 硬性限制最大进程数为 2000
username soft nofile 1024  # 限制最大文件描述符数

用户登录时间限制

如果需要限制某个用户只能在特定时间内登录系统,可以通过 pam_time.so 模块来实现,配置 /etc/security/time.conf 文件:

配置示例

bash 复制代码
login ; * ; username ; Al0800-1800  # 限制用户只能在早上 8 点到晚上 6 点之间登录

结语

通过本文的详细讲解,您可以掌握 Linux 系统中用户和用户组的管理操作。无论是创建新用户、删除用户、还是调整用户组权限,这些命令和技巧都能帮助您高效地管理系统用户和组。

相关推荐
mldong16 小时前
一个 App,十三套后端:手机审批端 uni-jeeflow-app 开源了
java·架构
AlanBruce16 小时前
摩尔信使MThings功能综述与应用使用指南
linux·自动化·plc·mthings·摩尔信使
tqs_1234517 小时前
MySQL RR隔离级别死锁|Gap间隙锁、临键锁,订单并发范围查询死锁根因方案
java
逆境不可逃17 小时前
Pi Agent 学习笔记:多个工具怎样并行执行
java
Flynt18 小时前
Java 27 升级实测:默认值动得比新特性多,有个老参数会让 JVM 直接起不来
java·jvm·后端
Bs_MoneyMagnet18 小时前
基于springboot+vue的个人健康管理系统的设计与实现 源码+文档
java·vue.js·spring boot·后端·vue3·springboot3·计算机毕业设计
星云API技术支持18 小时前
企业微信二次开发:群权限设置、成员管理与群资料维护的接口组合实践
java·前端·企业微信
niucloud-admin18 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
海宇AI19 小时前
零信任架构实战:基于海宇柠檬查出险-登记证构建自动化车抵贷核保网关
java·人工智能·架构·自动化
陈陈CHENCHEN20 小时前
【Linux】服务器根目录磁盘扩容操作记录
linux·运维·服务器