当前位置: 首页 > 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.dtcms.com/a/271422.html

相关文章:

  • 海康威视监控相机实时性研究
  • 深度学习遇到的问题
  • 一[3.7] YOLO系列基础(2)- “Bottleneck模块详解”
  • JavaScript对象的深度拷贝
  • 17.Spring Boot的Bean详解(新手版)
  • 十、Rocky Linux 9.x 在线安装Nginx 1.28.0
  • 豆包编写Java程序小试
  • 电子元器件基础知识总结
  • 基于SpringBoot+Vue的疫情问卷调查与返校信息管理系统】前后端分离
  • 城市地质大数据平台:透视地下空间,赋能智慧未来
  • git断点续传,中断后继续下载
  • 【计算机三级网络】——IP校园网大题(第二道):路由代码填空
  • 如何选择时序数据库:关键因素与实用指南
  • 20250709: WSL+Pycharm 搭建 Python 开发环境
  • 数据结构--堆的实现
  • 【黑马点评】(四)分布式锁
  • 深入理解 Spring AOP 代理机制:JDK 动态代理与 CGLIB 的对比与选择
  • c++学习-类中类成员变量的创建和释放顺序2-资源new出来的对象未被手动delete
  • 19-C#静态方法与静态类
  • HashMap的get与put流程源码深度解析
  • EPS 转 SVG/PNG 转换器集合
  • 托卡马克装置的发电过程解析
  • C++面试冲刺笔记1:虚函数的基本工作原理
  • thinkphp使用redis抢单实例
  • 深入理解MyBatis的MapperBuilderAssistant:如何解析Mapper XML文件?
  • 自然语言处理中probe探测是什么意思。
  • 基于docker进行渗透测试环境的快速搭建(在ubantu中docker设置代理)
  • EF提高性能(查询禁用追踪)(关闭延迟加载)
  • Java+AI精准广告革命:实时推送系统实战指南
  • 人工智能学习81-Yolo预测类