Linux系统下Capabilities机制的改进与完善.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:4 大小:313KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Linux系统下Capabilities机制的改进与完善.pdf

Linux系统下Capabilities机制的改进与完善.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据“nux系统下C印ab舭ies机制的改进与完善实现可执行文件的权能要:介绍了在Linux系统下对Capabilities所作的改进与完善,使用户能够方便地利用c印abilities机制来提高Linux系统的安全。改进主要有两个方面:(1)实现了可执行文件的权能,使关键词:“nux操作系统;权能访问控制;用户权能第26卷2006年6月计算机应用郎韶华1,罗军勇1,贾遂民2(1.信息工程大学网络工程系,河南郑州450002;2.郑州师范高等专科学院,河南郑州450002)(smmewnter@163.com)摘用户可通过配置可执行文件的权能来灵活控制相应进程拥有的权能范围;(2)对系统赋予进程权能的策略(即进程权能计算公式)进行了改进,从而实现了在只有一种权能配置的情况下,不同用户的进程在执行同一程序时可以拥有不同的权能。中图分类号:’rP316;TP393.08文献标识码:A权,或仅仅需要很少的几种特权,拥有多余特权对系统安全总c叩abilmes是Linux操作系统对特权操作进行访问控制信息的存储问题[1]。将可执行文件权能信息存放于文件的信息组织存放于文件的数据部分,又会引起可执行文件格式其中,h鹊h为一个双向链表头结构;idev为文件存放的设文件的权能信息以h鹊h链表的形式组织存放于内核,使系统能信息记录的总个数)。采用的hash查找算法为:以可执行/札asn—m8sk+1为ha8h链表数组的大小$/行文件的权能信息,并通过上述的h鹊h算法将其链人权能June文章编号:1001—9081(2006)06Z—0171一02在老版本的unux操作系统中,进程的特权操作是根据进程的有效用户身份来进行访问控制的。比如,以root为有效用户身份的每个进程,不管需不需要,都拥有系统所有的特权。而在大多数情况下,进程完成其服务功能时并不需要特是不利的。的一种安全机制,它是针对上述问题而提出来的,目的在于实现一种更加细粒度的特权操作的访问控制,使用户能够根据实际的安全需要来控制一个进程拥有的特权范围,从而取消进程的多余特权,避免多余特权带来的安全隐患∞一。1要实现可执行文件权能,首先必须解决可执行文件权能inode节点,会引起文件系统的不兼容;而将可执行文件权能的不兼容¨1。鉴于上述原因,解决方法是将系统所有可执行文件的权能信息集中存放于系统中的一个文件,它不仅不会引起文件系统或可执行文件格式的不兼容,而且非常方便,有利于可执行文件权能信息的集中管理和保护。将集中存放可执行文件权能信息的系统文件称为“权能配置文件”。1.1可执行文件权能信息的描述我们用下面的数据结构来描述可执行文件的权能信息:备号;jno为文件的inode号;伊、Ⅱ、厄则表示可执行文件的三组权能集。设置h船h链表域的目的主要是为了能将可执行可以使用h私h查找算法来快速获得可执行文件权能信息,从而加快权能信息的查询速度心】。用文件的设备号与文件号一起可用来索引文件的权能信息。1.2内核权能信息库的建立将h船h链表的大小设置为2lo舀(』\r+1)(其中Ⅳ表示权文件的inode节点号和设备号为输入,两者之和经过折半处理后整理为不超过hash链表大小的一个数作为输出。实现代码如下:/}权能信息记录的总数}/61e=矗ip一叩en(c印8』k—n硼e,o-RDoNLY,O);/$计算h∞h链表数组大小+/我们将在系统执行第一个用户进程(I面t()进程)之前建立权能h硒h链表。主要工作是:从权能配置文件中读取可执h髂h链表中。实现代码如下:/$h够h链表的头指针·//$申请hash链表空间女/作者简介:郎韶华(1981一),男,河南南阳人,硕士研究生,主要研究方向:网络信息安全;罗军勇(1964一),男,江西南昌人,副教授,主要研究方向:计算优化算法,网络信息安全;贾遂民,男,主要研究方向:电子商务.Co瑚【puterApplicationsV01。262006{smlctli8Lhead·next,+preV;);exe—c印j(unsi驴ed);unsi弘edc印一num;/-打开权能配置文件,/inode=file一>f_dentIy一>d—inode;cap-num=(un8i印ed10ng)(((unsignedlong)inode一>i—size)/sizeo“8tnlctexc—capj));wh丑e((cap—num>>=1UL)!=OUL)hash—mask=(1<<hash—shift)一1;hash(kdevjLino)l”gtmp=i—ino+(unsignedlong)i—dev;咖p=协1p+(trllp>>ha8h一8hift);}li8Lhead十c印一h酗htable;cxe—c印-I}exe—c印一head;cap—hashtable=