当前位置: 首页 > 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.lryc.cn/news/583020.html

相关文章:

  • 【python基础】运算符与布尔值全解析
  • 智慧航天运载体系全生命周期监测 | 图扑数字孪生
  • Shader面试题100道之(41-60)
  • 从0实现线性回归模型
  • vue3.2 前端动态分页算法
  • 「Java案例」打印数字金字塔
  • [Backlog] 核心协调器 | 终端用户界面(TUI)实现 | 多分支任务冲突解决 | 测试验证体系
  • 技术支持丨解决 ServBay 在 Windows 启动时反复提示安装 .NET 的问题
  • Python(30)基于itertools生成器的量子计算模拟技术深度解析
  • 使用LLaMA-Factory微调Qwen2.5-VL-3B 的目标检测任务-数据集格式转换(voc 转 ShareGPT)
  • 【洛谷题单】--顺序结构(一)
  • C++高频知识点(六)
  • [NOIP][C++]洛谷P1376 [USACO05MAR] Yogurt factory 机器工厂
  • LeetCode--42.接雨水
  • C++(STL源码刨析/vector)
  • 从历史航拍图像中去除阴影
  • 11款常用C++在线编译与运行平台推荐与对比
  • 力扣-75.颜色分类
  • Web后端开发-Mybatis
  • qt-C++笔记之setCentralWidget的使用
  • 软件系统测试的基本流程
  • 数据结构*搜索树
  • 从零开始手写嵌入式实时操作系统
  • 牛市来临之际,如何用期权抢占反弹先机?
  • 初识mysql(一)
  • [特殊字符] AlphaGo:“神之一手”背后的智能革命与人机博弈新纪元
  • 【深度学习新浪潮】什么是蛋白质反向折叠模型?
  • 深度学习超参数优化(HPO)终极指南:从入门到前沿
  • FairyGUI 实现 Boss 双层血条动画
  • qt-C++语法笔记之Stretch与Spacer的关系分析