本项目是SJTU IS415 2022-2023学年课程大作业
本项目实现了一个基于强制访问控制的集成运行权限管理程序。
本项目在 Ubuntu 20.04.01 操作系统上实现,内核版本号为 5.15.0-xx-generic
由于在 linux 系统中,进程会继承用户的权限,因此本系统通过对用户的权限设置实现对于进程的权限管理。
本项目实现的功能如下:
- 进程的文件、目录访问权限控制
- 用户分为 4 个权限等级:1, 2, 3, 4;文件与目录分为四个权限等级:1, 2, 3, 4;
- 权限等级数值越大,权限等级越高;
- 用户进程可以访问权限等级相当和权限等级较低的文件与目录。
- 进程的网络权限控制
- 对用户进程的网络访问权限进行控制
- root 进程的 reboot 权限控制
- 对 root 进程的 reboot 系列权限进行控制
- 用户进程的系统内核日志权限控制
- 对用户进程的系统内核日志访问、日志删除等权限进行控制
- 日志记录
- 对于越权行为输出系统内核日志
- 对于权限控制输出记录日志
SystemDesign-IS415-dev ├── doc/# 项目开发过程中的文档与代码资料 ├── README.md └── src/# 项目源代码 ├── kernel/ # 内核态源代码 │ ├── Makefile │ ├── prm_error.h# 内核态通用返回值定义 │ ├── prm_hook.c# 内核态hook功能函数库 │ ├── prm_hook.h │ ├── prm_module.c# 内核态模块主文件 │ ├── prm_netlink.c# 内核态netlink功能函数库 │ └── prm_netlink.h └── user/# 用户态源代码 ├── Makefile ├── server.c# 后端服务器 ├── client.c# CLI客户端 ├── operation.h# client操作类型定义 ├── socket_error.h# client返回值定义 ├── database.c# 数据库功能函数库 ├── database.h ├── database.db# 数据库文件 ├── databaseExtension.c # 数据库权限查询功能函数 ├── databaseExtension.h ├── log/# 日志文件目录 ├── log.c# 日志功能函数库 ├── log.h ├── log.conf# 日志配置 ├── prm_error.h# 同src/kernel/prm_error.h ├── user_netlink.c# 用户态netlink功能函数 ├── user_netlink.h └── test/# 测试用函数、文件与脚本