当前位置: 首页 > news >正文

正点原子学习 用户权限管理

在这里插入图片描述

1: /etc/group 是什么?

/etc/group 文件是 Linux/Unix 用来定义**用户组(Group)**的配置文件。

每一行定义一个用户组的信息,包括:组名、组密码(几乎废弃)、GID(组ID),以及属于这个组的用户列表。

字段作用
组名用户组名字(唯一标识)
x一般写 x,真正的组密码几乎不用了
GID组 ID
组内用户这个组里有哪些用户(除了主组,还可以把其他用户附加到这个组)
adm:x:4:syslog,mfo
cdrom:x:24:mfo
sudo:x:27:mfo
plugdev:x:46:mfo
audio:x:29:pulse

adm: x:4:syslog,mfo
→ 有个叫 adm 的组,GID=4,里面有 syslog 和 mfo 两个用户
→ adm 通常用来让成员可以读系统日志文件。

cdrom: x:24:mfo
→ cdrom 组,GID=24,mfo 是成员
→ 允许 mfo 访问光驱设备。

sudo: x:27:mfo
→ sudo 组,GID=27,mfo 是成员
→ 成员可以用 sudo 执行管理员命令。

plugdev: x:46:mfo
→ plugdev 组允许 mfo 管理可插拔设备(USB、移动硬盘)。

audio: x:29:pulse
→ audio 组包含 pulse 用户(PulseAudio 音频守护进程)
→ 让它可以访问音频硬件。

mfo❌1000: 有一个和用户同名的用户组嘛,为啥没有自身

ChatGPT 说:

你说的 /etc/group 里的这一行:

makefile
复制
编辑
mfo❌1000:
这是一个与用户名同名的用户组(常见于 Ubuntu 等发行版)。这里的最后一个字段是组成员列表,空着说明:

这个组只有“一个成员”,就是它的主用户 mfo,但主用户不一定显示在成员列表中。

为什么主用户不出现在成员列表?
/etc/group 文件中成员列表只列出附加组成员(secondary group members)。

用户的主组通过 /etc/passwd 文件的第三字段(GID)指定,不用在 /etc/group 里重复列出。

所以,mfo 用户的主组是 mfo 组(GID 1000),但 /etc/group 里不显示。

2 adduser 和 deluser 命令整理

命令功能说明示例
adduser创建新用户创建一个新用户,默认会创建同名的用户组,并添加用户到该组。sudo adduser zzk1
deluser删除指定用户删除指定用户,默认不删除同名组(除非组为空),可带参数删除组。sudo deluser zzk1
delgroup删除指定用户组删除空用户组sudo delgroup zzk1

2. APT (Advanced Package Tool)

apt-get 是什么?
apt-get 是 APT (Advanced Package Tool) 系统的一个命令行前端。

用来 安装、更新、升级、卸载、修复软件包。

专门用于基于 Debian 的 Linux 发行版,比如 Ubuntu、Kali、Raspberry Pi OS。

2.1 常用 apt-get 命令

命令作用常用示例
apt-get update更新可用软件包的索引(只更新索引,不安装)sudo apt-get update
apt-get upgrade升级所有已安装的软件到最新版sudo apt-get upgrade
apt-get install安装新软件包sudo apt-get install vim
apt-get remove卸载软件包(保留配置文件)sudo apt-get remove vim
apt-get purge卸载软件包及其配置文件sudo apt-get purge vim
apt-get autoremove自动卸载系统中不再需要的依赖包sudo apt-get autoremove
apt-get dist-upgrade升级系统,并智能处理依赖和可能的冲突sudo apt-get dist-upgrade
apt-get clean清理已下载的软件包缓存sudo apt-get clean

3 APT 与 insmod 和rmod 有啥区别

比较点apt-getinsmod / rmmod
层级用户空间(应用层)内核空间(内核模块层)
对象软件包(.deb)内核模块(.ko)
功能安装/更新/卸载应用程序加载/卸载内核模块
是否处理依赖自动(APT 自动解析依赖)insmod 不自动,modprobe 可以
是否需要 root 权限一般需要(涉及系统文件)必须要 root(涉及内核)

4 驱动和软件包有啥区别?

对比项软件包驱动
安装方式用包管理器 (apt-getyumpacman)内核编译时编译进去或使用 insmodmodprobe 加载
是否自动管理依赖有包管理器自动解析需要手动或 modprobe 解决依赖
是否动态软件随时运行/卸载驱动可动态插拔(内核模块)或编译成内核静态部分
卸载apt-get removermmod 卸载模块

4.1什么是用户空间?

用户空间(User Space)

就是普通应用程序运行的“区域”。

这里运行的是 用户态进程:比如 vim、bash、firefox、nginx 等。

这里不能直接访问硬件,也不能直接操作内核。

必须通过 系统调用(System Call) 让内核帮忙完成文件读写、网络通信、进程调度等“特权操作”。

4.2 什么是内核空间?

内核空间(Kernel Space)

是 Linux 内核自己的“特权区域”。

这里运行的是 内核代码:进程调度、内存管理、文件系统、驱动模块(设备驱动)、网络协议栈等。

内核直接与硬件交互,提供给用户程序一个安全的抽象接口(系统调用、驱动接口)。

4.3对比

对比点用户空间内核空间
谁在运行普通用户态程序Linux 内核自身
是否直接访问硬件不允许直接控制硬件
程序权限受限(低权限)高权限(Ring 0)
崩溃后果程序自己崩溃整个系统可能挂掉
内存地址虚拟内存地址空间的一部分受保护的地址空间
入口出口调用系统调用进入内核处理完再切换回用户态

4.4 为什么要分开?

🔐 目的:安全 + 稳定

用户程序出错只影响自己(进程崩溃)

内核保护硬件和其他进程免受影响

防止恶意程序直接操作内存、IO 端口

4.5 简单示意图

+----------------------+
|   用户空间 (User)    |
|  ------------------  |
|  应用: bash, vim,   |
|  nginx, chrome ...   |
+----------------------+||系统调用||
+----------------------+
|   内核空间 (Kernel)  |
| -------------------- |
|  进程调度、内存管理、 |
|  驱动、文件系统、网络 |
+----------------------+||硬件 (CPU/IO)

4.5 驱动在用户空间吗?

A: 绝大多数驱动是内核模块(*.ko),运行在内核空间。某些驱动可以部分放在用户空间(比如 FUSE 文件系统),但核心访问还是通过内核完成。

Q: 内核挂了会怎么样?
A: 内核空间出错(比如驱动 Bug) → Kernel Panic(内核崩溃) → 系统死机重启。

5 文件系统是 内核 还是用户?

内核空间用户空间
是否包含文件系统✅ 文件系统驱动/核心逻辑都在内核里🚫 没有完整实现(除 FUSE)
功能解析文件格式、管理磁盘块、挂载、读写缓存、权限控制可以写用户态文件系统逻辑(如压缩/加密),但最终依赖内核
典型ext4、xfs、btrfs、NTFS、VFSFUSE、sshfs、rclone mount
http://www.xdnf.cn/news/1093933.html

相关文章:

  • 汽车工业制造领域与数字孪生技术的关联性研究​
  • Python数据分析案例|从模拟数据到可视化:零售门店客流量差异分析全流程
  • 17-C#封装,继承,多态与重载
  • PyTorch数据准备:从基础Dataset到高效DataLoader
  • Hadoop(一)
  • 操作系统核心技术剖析:从Android驱动模型到鸿蒙微内核的国产化实践
  • C++随机打乱函数:简化源码与原理深度剖析
  • 3 STM32单片机-delay延时驱动
  • (八)PS识别:使用 Python 自动化生成图像PS数据集
  • 智慧物流管理:动作识别与包装检测的协同突破
  • Python标准库:时间与随机数全解析
  • 方差、协方差和协方差矩阵
  • TCP/IP常用协议
  • Dify升级到1.5.1详细操作步骤,规避和RAGFlow的镜像冲突问题
  • 神经网络基础及API使用详解
  • 零知开源——STM32F407VET6驱动SHT41温湿度传感器完整教程
  • Linux的 `test`命令(或等价中括号写法 `[空格expression空格]`)的用法详解. 笔记250709
  • 恒盾C#混淆加密大师最新版本1.4.0更新 - 增强各类加密效果, 提升兼容性, 使.NET加密更简单
  • 深入理解图像二值化:从静态图像到视频流实时处理
  • HNU 操作系统 Smile_Laughter的学习心得
  • 图像硬解码和软解码
  • git中的指令解释
  • 高级LoRA:面向垂直领域LLM的实战微调指南——LoRA合并、续训、堆叠,Checkpoint管理
  • linux-用户和组
  • 语音识别核心模型的数学原理和公式
  • aichat-core简化 LLM 与 MCP 集成的前端核心库(TypeScript)
  • 前端开发自动化设计详解
  • C#基础篇(10)集合类之列表
  • Ubuntu重装系统后ssh连接不上(遇到 ​​“Unit ssh.service not found“​​ 错误)
  • 钉钉企业应用开发技巧:查询表单实例数据新版SDK指南