编辑: kieth | 2016-01-27 |
20113317 班级:
2011252 院系:计算机科学与技术学院 专业年级:信息安全2011级2014年5月28 日 目录
1 设计目标
3 2 操作环境
3 3 ACL访问控制原理
3 4 概要设计
3 5 详细设计
4 5.
1系统流程图
4 5.2 程序功能模块设计
5 6 运行结果及截图
5 7 实验心得
7 附录:
7 1 设计目标 设计并实现基于 ACL 的细粒度访问控制,需要具备以下功能: (1) 针对一个具体的文件,为其定义并设计ACL 表;
(2) 为一个文件定义访问权限时,定义一个最大权限值,对用户做总的限定;
(3)基于ACL 进行访问控制判定并进行测试.
2 操作环境 操作系统:win7 64位 软件环境:VC++6.0
3 ACL访问控制原理 基于权限位的访问控制将系统中的每个文件进行用户的划分,分别为属主、属组和其余,这种访问控制思想为操作系统中的访问控制提供了一种实用的方法,但存在明显的不足,那就是只能区分三类用户,粒度太粗,针对给定的一个文件,难以做到为四个以上的用户分配相互独立的访问权限. 此时,我们可以采取一种细粒度的访问控制机制,即ACL机制,针对任意给定的一个文件,可以为任意个数的用户分配相互独立的访问权限.我们将属主、属组和其余三个用户类扩展为属主、指定用户、属组、指定组和其余五个用户类.判断一个进程能否对一个文件进行访问,基本思想应该是检查文件的ACL表中是否存在于进程相关的用户标识或组标识相匹配的表项,进而从中检查是否有符合条件的权限可用.我们也可以在ACL表中设立一个专用行mask,用于表示权限的最大值,访问判定时,先将用户的权限和mask行指定的权限进行"逻辑与"运算,再根据运算后得到的结果进行判定.
4 概要设计 通过以上对ACL访问控制原理的理解,我设计了以下安全机制: 第一步:创建一个文件,并定义文件所具有的属性. 第二步:配置文件的内容,并定义各个用户对文件的访问权限. 第三步:通过查找用户名,得到该用户对文件所拥有的权限,进行访问判定. 第四步:配置mask表项,和用户的权限进行"逻辑与"运算,得到最终权限. 第五步:完成对mask表项的配置后,再通过查找用户名,进行访问判定.
5 详细设计 5.1系统流程图 5.2 程序功能模块设计 Void main():主函数入口 void Display(int x) :显示系统会为该文件配置的属性 void Setpermissions(int x,file&acl):根据Display函数各个序号所定义具有的属性,分不同情况配置权限 void permissionsdisplay(int x) :显示用户(组)对文件的操作权限 void checkbefore(file&acl) :根据用户名查找配置mask权限前的访问权限 void checkafter(file& acl) :根据用户名查找配置mask权限后的访问权限
6 运行结果及截图 首先选择文件属性并且输入文件名称,如下图 配置文件的操作权限,如下图 查找配置MASK前的访问权限 查找配置MASK后的访问权限
7 实验心得 这次的课程设计,我做的是基ACL 的细粒度访问控制,经过动手操作使我对其原理有了更清楚的理解.普通的访问控制只能区分属主,属组,其他三种用户,粒度太粗.而ACL访问控制机制通过制定五个不同的用户类,我们可以对一个文件进行细粒度的访问控制,可以为任意个数的用户分配独立的权限,并且改变分配给任意一个用户的权限,不会对其他用户的权限产生影响,在定义不同权限的同时我们也可以定义一个最大权限. 在完成程序的过程中我碰到了一些困难,就是定义MASK最大权限的问题,如何将代表操作权限的八进制数转化成二进制数并和MASK进行逻辑与运算成为了首要的问题,在同学的帮助下以及上网查找资料后我运用整除取余的方法获得二进制数,然后将权限与MASK值进行逻辑与运算,得到对读写和执行是否拥有权限后,进行判定最终的权限. 通过本次课程设计,让我对ACL访问控制机制有了更深一步的了解,也加强了我的实际动手能力,并且在课后我也会再接再厉的学习相关知识. 附录: 主要代码: #include #include #include #include "acl.h" using namespace std;