操作系统安全课设安全文件系统.docx
《操作系统安全课设安全文件系统.docx》由会员分享,可在线阅读,更多相关《操作系统安全课设安全文件系统.docx(16页珍藏版)》请在冰豆网上搜索。
操作系统安全课设安全文件系统
中南大学
操作系统安全
课程设计报告
学生姓名代巍
指导教师宋虹
学院信息科学与工程学院
专业班级信安1201班
学号0909121615
完成时间2015年1月15日
摘要
本课程设计是实现一个多用户文件系统,通过具体的文件存储空间的管理、文件访问权限控制、目录结构和文件操作的实现。
通过加深理解文件系统的内部功能及内部实现,掌握文件存储空间的管理,理解文件的物理结构,掌握目录结构的实现,掌握文件操作的实现,可以基本实现一个界面友好,功能完整的文件系统。
本人在此次课程设计分组中承担了文件或目录操作,复制,粘贴,剪切,重命名加密,解密等任务。
目录
摘要2
1概述4
1.1设计任务4
1.2设计目的4
1.3解决的问题4
1.4实验环境4
2总体设计5
2.1需求分析5
2.2设计思路6
2.3功能设计6
2.3.1剪切,复制,粘贴功能6
2.3.2重命名功能6
2.3.3加密解密功能7
3详细设计8
3.1主要函数8
3.2关键算法11
4使用说明以及完成情况12
4.1简单的使用说明12
4.2存在的问题15
5总结15
5.1作品特色15
5.2经验教训15
5.3心得体会16
参考文献17
1概述
1.1设计任务
采用C或C++编程语言,开发一个多用户安全的文件系统。
基本要求如下:
1.能实现对多种不同文件及目录的管理,包括对文件系统(包括文件和目录)读、写、创建、删除、打开、关闭、命名等操作;
2.对不同的文件和目录能设置访问权限和操作权限;
3.对不同的用户也设置访问权限和操作权限;根据用户和文件的权限来进行文件系统的操作。
4.文件可以加密存储,可以进行一致性检测;
5.审计日志
6.能完成一种外部存储设备(如USB、移动硬盘)的空间动态添加到该文件系统中进行管理,存入该设备的文件是有权限用户。
7.采用类似于Windows的窗口界面。
1.2设计目的
作系统安全是整个计算机系统安全的重要基础,主要针对操作系统层面的安全进行剖析,是上层运行的重要保证。
与计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。
本课程设计的目的综合应用学生所学知识,建立安全系统的概念,理解和巩固操作系统基本理论、原理和方法,掌握安全操作系统开发的基本技能。
1.3解决的问题
在操作系统安全层面上来讲,文件系统的安全是很重要的一环,如何保证用户的文件安全,是操作系统设计者需要考虑的问题。
1.防止入侵者渗透操作系统并窃取或改动用户的文件。
2.对文件系统进行分级管理,让不同级别的用户只能看到自己权限范围内的文件。
3.设置规则对文件进行管理,并实现用户对文件的基本操作。
1.4实验环境
实现环境:
UbuntuLinux操作系统,LinuxGCC编译环境,QTCreator编译器
开发语言:
C语言
2总体设计
本文件系统主要分为用户注册登录模块,授权管理模块,文件操作模块,以及审计相关模块。
文件系统操作,包含格式化,显示文件(目录),创建文件等几个简单命令的实现,而且能完成超级块的读写,节点的读写等过程。
文件系统多用户授权管理,通过写入一个超级用户账号(root),超级用户能注册不同等级的新用户,并赋予不同等级的权值,对应不同的权限。
不同的用户权限能做的文件操作都有限制。
另外,为了简单本文件系统未考虑文件共享、文件系统安全以及管道文件与设备文件等特殊内容。
2.1需求分析
1.设计一个多用户多级目录文件管理系统。
2.要设计多个实用命令并设置文件保护措施。
3.设计一个较实用的用户界面,方便用户使用,界面要为用户提供足够的选择信息,不需用户打入冗长的命令
4.功能简介:
①多用户管理,多级目录形式。
②基本的文件操作功能,如新建文件、打开文件、写入文件、关闭文件、读取文件等。
③用户间文件的共享功能
2.2设计思路
1.界面展示:
列出目录文件,展示文件,以及是否当前用户文件,以及是否有权限进行操作。
2.Inode节点主要存储:
当前的地址、文件的长度、用户名、读写的权限、文件是否打开、文件的类型(0代表目录,1代表普通文件)、对应文件块的地址(即序号)、父节点块号、自己的当前节点的序号。
3.文件选中:
可获取文件对应Inode的索引、文件的名字、当前目录下的Inode和文件的对应关系
4.控制类:
得到用户的输入操作调用相应的操作。
2.3功能设计
我负责的是文件或目录操作,复制,粘贴,剪切,重命名加密,解密等模块。
采用的方法是将文件的描述符用界面点选来获取,并将此描述符参数传入对应的文件操作方法中去。
主要还是以Qt封装好的QFileSystemModel为核心。
2.3.1剪切,复制,粘贴功能
通过界面设计,如果鼠标点选到了文件,就获取当前文件的路径。
文件系统界面会提供“复制”,“剪切”按钮给用户,假如用户点选“剪切”按钮,则记录flag为1,点选“复制”按钮,则记录flag为2.之后用户做“粘贴”操作时,只需要在相应的路径点选“粘贴”按钮,根据flag来判断执行的是复制还是剪切,完成操作后,将flag清零,以便于下一次操作。
2.3.2重命名功能
通过界面点选,获取到当前路径,获取到最后一个“/”之后的内容,用户点选重命名按钮,提供文本框同时获取用户输入的值,将这个值替换“/”之后的内容。
2.3.3加密解密功能
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。
由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。
三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。
它可用来作为电子邮件的传输编码。
在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。
利用Base64加密算法,将所需要加密的文件内容转码,将文件的明文转义生成新的文件或者覆盖源文件。
解密时再通过该算法,将密文转回明文。
不同用户只能依托于自身的权限,对自己的文件进行加密解密处理。
3详细设计
3.1主要函数
1.剪切复制粘贴
剪切触发器
复制触发器
粘贴触发器
2.重命名功能
3.加密解密
加密触发器
解密触发器
3.2关键算法
1.获取文件路径,该算法可用于对文件任何操作。
当点选当前文件时,路径就被储存在变量index中,以备之后调用。
QModelIndexindex=sTreeView->currentIndex();
filePathSrc=sFileSystemModel->filePath(index);
通过鼠标点选获取参数index,进而获取参数index的路径值,得到文件路径。
2.Base64加密,采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。
具体是通过将文件进行base64编码,并储存在数组ba中,最后再将数组中的内容储存入文件。
QByteArrayba=original.readAll().toBase64();
QFiledest(filePath.append("_enc"));
dest.write(ba);
original.close();
dest.close();
3.Base64解密,可将编码后的文件转回原文。
通过转换后的数据存入数组ba,再把数组中的内容以替换或追加的方式写入。
QByteArrayba=QByteArray:
:
fromBase64(file.readAll());
dest.write(ba);
file.close();
dest.close();
4使用说明和完成情况
基本完成了一个功能完整的文件系统,采用Qt(基于C++)来完成界面编程,但是随之带来的问题是,如果要做界面,又要重新设计文件系统,就不能直接用Qt封装好的类来把自己设计的文件系统显示到界面上,对常见的文件系统,Qt都可以用QFileSystemModel装载到QTreeView、QTableView或者其他组件中完成显示。
4.1简单的使用说明
1.登录后程序主界面
2.执行复制粘贴操作,将test文件夹从mnt/share复制到temp文件夹中
3重命名操作,将文件名test改为test1
3.加密解密操作,对test进行加密操作,得到转码文件,再进行解密
得到了加密后的文件
进行解密,得到解密后的文件
4.2存在的问题
1.没有独立的磁盘管理功能,没有能从磁盘开辟空间,对文件进行定义,分区存储以及管理。
2.加密解密方式过于简单,并没有实现完全的加密封锁。
虽然进行了转码,能避免重要信息直接以明文的方式呈现,但是假如有入侵者获取了控制权,虽然他不能够获取文件的信息,但是他可以把这个文件直接删除,或者做一些损坏性的操作。
这堆用户来说依然是不安全的。
5总结
5.1作品特色
将界面设计的作用发挥出来,例如用点选的方式获取文件路径,同时对文件的操作,也是通过按钮的方式,来对当前被选中的按钮操作。
将界面设计和文件操作用传参数的方式完美结合,保证了整个系统的功能实现。
功能完整,其中加密解密模块,日志模块,和用户授权模块,更是符合了操作系统安全的理念,基本上能保证文件的安全性。
5.2经验教训
因为对文件系统、linux方面的了解实在太少,以至于第一遍写的文件操作模块无法和小组成员设计的其他模块进行调用和通信。
进行了与相关的修改。
但是还是很遗憾,虽然修改后的程序编译没有问题,但是运行时无法把操作和界面相结合的问题,与组员努力思考,参考各种资料,但是还是未能解决问题。
最终我们将此模块换了一种思路,用一种比较简单的方式来实现文件操作。
5.3心得体会
经过操作系统安全课程设计,对文件管理系统的实现,这样的系统稍微有点错误都会导致不可估算的代价,同样要把理论的东西用于实际,也是一个很大的挑战,我们刚开始开始主要运用了Linux下的C语言编程,但随后大部分是用了Qt界面编程。
期间查阅了很多资料,得到了老师很多指导。
期间遇到了好多问题也都一一解决,从这个过程中学到了很多理论课程所不能学到的知识。
让我对操作系统的文件系统思想有了深刻的理解,同时对于编程的方法也有了更进一步的认知。
在与小组成员合作做项目的时候,团队协作很重要,我们三个经过探讨都会有产生很好的想法,遇到困难的时候大家共同想办法解决。
应该享受这个既能学习知识,又能实践锻炼的过程。
参考文献
[1]宫虎波.Linux编程从入门到精通[M].北京:
化学工业出版社,2009.8:
112-184.
[2]张尧学,史美林,张高.计算机操作系统教程[M].北京:
清华大学出版社,2006:
197-221.
[3]卿思汉,沈晴霓,刘文清.操作系统安全(第2版)[M].北京:
清华大学出版社,2011:
104-229.
[4]汤子瀛,哲凤屏.计算机操作系统[M].西安:
西安电子科技大学学出版社.2007.5:
34-158