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 系统中用户和用户组的管理操作。无论是创建新用户、删除用户、还是调整用户组权限,这些命令和技巧都能帮助您高效地管理系统用户和组。

相关推荐
正在走向自律20 分钟前
阿里云ESC服务器一次性全部迁移到另一个ESC
服务器·阿里云·云计算
路在脚下@20 分钟前
spring boot的配置文件属性注入到类的静态属性
java·spring boot·sql
森屿Serien23 分钟前
Spring Boot常用注解
java·spring boot·后端
gywl1 小时前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
苹果醋31 小时前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
Hello.Reader2 小时前
深入解析 Apache APISIX
java·apache
了一li2 小时前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
日记跟新中2 小时前
Ubuntu20.04 修改root密码
linux·运维·服务器
菠萝蚊鸭2 小时前
Dhatim FastExcel 读写 Excel 文件
java·excel·fastexcel