以下文章基于AI生成初稿,进修改调整后发布,供自我学习。

Linux 的用户和用户组管理是系统安全和权限控制的核心机制。它确保了不同用户只能访问其被授权的资源,防止误操作或恶意行为。

下面将从基本概念、工作机制、常用命令和实际应用等方面解释。

一、用户(User)

Linux 的每个进程和文件都归属于某个用户,系统通过“用户”识别谁在运行程序、谁创建了文件。

1. 用户类型

类型UID 范围说明
超级用户(root)UID 0拥有系统最高权限,可以访问和修改所有文件和设置。默认用户名为 root。
系统用户(系统账户)UID 1–999(Debian/Ubuntu 可能到 1000)用于运行系统服务(如 www-data 运行 Web 服务,mysql 运行数据库),通常不用于登录。
普通用户UID ≥ 1000由管理员创建,供真实用户使用,权限受限,不能随意修改系统核心文件。

UID(User ID):系统内部用数字标识用户,而不是用户名。

二、用户组(Group)

组是用户的集合,用于简化权限管理。一个用户可以属于多个组。

组类型有主组(Primary Group,类似角色的概念)和附加组(Supplementary Groups)。主组:每个用户必须有一个主组,新建文件时,默认归属该组。附加组:用户可以属于多个附加组,获得这些组的权限。

为什么需要组?一是权限共享:例如,多个开发者需要访问同一个项目目录,可以把他们加入 developers 组,并设置目录权限为 g+rwx。二是简化管理:不用逐个设置权限,只需对组授权。

三、关联的核心文件(用户/组信息存储)

Linux 使用几个关键文件来存储用户和组信息:

文件作用
/etc/passwd存储所有用户的基本信息(用户名/UID/主组/家目录/默认 shell);
不保存密码(密在 /etc/shadow)
/etc/shadow加密存储用户密码(仅 root 可读)
/etc/group存储组信息(组名、GID、成员)
/etc/gshadow组密码和管理员(较少使用)

示例 /etc/passwd 一行:

$ alice:x:1001:1001:Alice Smith:/home/alice:/bin/bash

四、用户/组与权限的关系

Linux 文件权限分为三类:

$ -rw-r–r– 1 alice developers 1024 Apr 5 10:00 file.txt

所以:用户 alice 是file.txt文件所有者,拥有读写权限;developers 组的成员可以读取该文件;其他人只能读。


五、常用用户和组管理命令

命令功能示例
adduser / useradd创建用户sudo adduser alice
deluser / userdel删除用户sudo deluser –remove-home alice
passwd修改密码sudo passwd alice
usermod修改用户属性sudo usermod -aG sudo alice(加附加组)
groups查看用户所属组groups alice
id显示用户和组 IDid alice
groupadd创建组sudo groupadd developers
groupdel删除组sudo groupdel developers
gpasswd管理组成员或密码sudo gpasswd -a alice developers

六、实际应用场景(个人用户场景)

场景 1:让普通用户能执行管理员命令

将用户加入 sudo 组

$ sudo usermod -aG sudo alice

之后用户可以用 sudo 执行需要 root 权限的命令;sudo组不同于root组,root组只有1个用户,就是root;

场景 2:多个用户共享一个目录

# 创建组

$ sudo groupadd project-x

# 将用户加入组

$ sudo usermod -aG project-x alice

$ sudo usermod -aG project-x bob

# 创建共享目录并设置组所有权

$ sudo mkdir /shared/project-x

$ sudo chgrp project-x /shared/project-x

$ sudo chmod 775 /shared/project-x  # 组内可读写执行

场景 3:禁止用户登录(仅用于服务,不提供给真实客户登录)

创建一个无法登录的系统用户: sudo adduser –system –no-create-home –shell /usr/sbin/nologin appuser

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注