可扩展的访问控制列表框架的制作方法

文档序号:6351068阅读:110来源:国知局
专利名称:可扩展的访问控制列表框架的制作方法
可扩展的访问控制列表框架
背景技术
可以根据访问控制列表(“ACL”)来控制对文件系统中文件的访问。ACL可以用于指定对文件系统对象(例如,文件和目录)的访问许可。ACL可以包括许多实体的列表和对每个实体的不同许可。每个实体可以定义一个用户或者一个组。

发明内容
本文公开了用于可扩展ACL框架的方法、系统与计算机产品。本公开内容的实施方式可以实现为文件系统框架和内核扩展。一种通用的实施方式包括用于管理对文件系统上对象的访问的计算机实现的方法,包括在用于支持多种访问控制列表(ACL)类型的操作系统环境中提供一种框架,由此使得可以根据所关联的ACL类型的定义来管理对文件系统上对象的访问;及接受ACL类型的定义。另一种通用的实施方式包括用于控制对文件系统的访问的计算机实现的方法。该方法包括接收用以利用与存储器中可用的多种访问控制列表(ACL)类型定义中的一种相对应的ACL类型的ACL来控制对文件系统对象的访问的请求;而且,响应于接收到用以利用所述ACL类型的ACL来控制对文件系统对象的访问的请求,根据所述ACL和所述ACL类型定义来控制对对象的访问。根据ACL和ACL类型定义来控制对对象的访问可以通过以下步骤执行与所述对象相关联地存储ACL类型的指示符;而且,响应于接收到用以访问所述对象的请求,根据所述指示符检索所述ACL类型定义,并根据所述ACL和检索出的ACL类型定义来管理对所述对象的访问。另一种用于控制对文件系统的访问的计算机实现方法可以包括接收定义访问控制列表(ACL)类型的ACL类型定义;及把所述访问控制列表(ACL)类型定义存储在存储器中。其它的通用实施方式包括用于管理对文件系统上的对象的访问的系统。该系统包括一个或多个计算机,其中所述计算机包括处理器和操作地耦接到所述处理器的计算机存储器。一个或多个所述计算机的计算机存储器中配置有用于在所述处理器上执行来实现以上所述的一种或多种方法实施方式的计算机程序指令。根据以下对如附图中所例示的本发明示例实施方式的更特定描述,本公开内容的以上及其它目的、特征和优点将显而易见,附图中相同的标号通常代表本发明示例实施方式的相同部分。


图I给出了用以例示根据本发明实施方式的用于管理对文件系统上的对象的访问的方法的流程图。图2给出了根据本发明实施方式的示例计算机的框图。图3是例示了根据本发明实施方式的用于管理对文件系统上的对象的访问的方法的数据流程图。
图4A和4B例示了用于与对象相关联地存储ACL类型的指示符的数据结构。图5给出了用以例示根据本发明实施方式的用于管理对文件系统上的对象的访问的框架的数据流程图。图6A和6B是例示了根据本发明实施方式的用于管理对文件系统上的对象的访问的方法的数据流程图。
具体实施例方式参考附图来描述用于管理对文件系统上的对象的访问的示例方法、系统和计算机产品。在此所使用的术语仅仅是为了描述特定的实施方式,而不是要成为对本发明的限制。 如在此所使用的,单数形式的“一个”和“该”是要也包括复数形式,除非上下文清楚地另外指示。还将理解,当在本说明书中使用时,术语“包括”和/或“包含”指定所述特征、整体、 步骤、操作、元素和/或部件的存在,但是不排除一个或多个其它特征、整体、步骤、操作、元素、部件和/或其组的存在或添加。以下权利要求中所有装置或步骤加上功能元件的对应结构、部件、动作和等同物都是要包括用于与其它所请求保护的元件相组合而执行所述功能的任何结构、材料或者动作,就象明确声明的那样。给出对本发明各种实施方式的描述是为了例示和描述的目的,而不是要详尽或者把本发明限制到所公开的形式。许多修改和变化对本领域普通技术人员都将是显而易见的。对实施方式的选择和描述是为了最好地解释本发明的原理和实践应用, 并且使本领域其他普通技术人员能够理解本发明具有适合预期特定使用的各种修改的各种实施方式。如本领域技术人员将认识到的,本发明的各方面可以体现为系统、方法或者计算机程序产品。相应地,本发明的各方面可以采取完全硬件实施方式、完全软件实施方式(包括固件、驻留软件、微代码,等等)或者组合软件和硬件方面的实施方式,在这里全都可以总体上称为“电路”、“模块”或者“系统”。此外,本发明的各方面可以采取包含在一种或多种计算机可读介质中的计算机程序产品的形式,其中在计算机可读介质上包含了计算机可读程序代码。可以使用一种或多种计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质可以是,例如但不限于,电、 磁、光、电磁、红外或者半导体系统、装置或设备或者以上所述的任意合适组合。计算机可读存储介质的更具体例子(非详尽列表)将包括以下具有一条或多条电线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPR0M 或者闪速存储器)、光纤、便携式光盘只读存储器(CD-ROM)、光存储设备、磁存储设备或者以上所述的任意合适组合。在本文档的背景下,计算机可读存储介质可以是可包含或者存储用于由指令执行系统、装置或设备使用或者与其相关使用的程序的任何有形介质。计算机可读信号介质可以包括例如在基带中或者作为载波的一部分传播的数据信号,在所述数据信号中包含了计算机可读程序代码。这种传播的信号可以采取多种形式中的任意一种,包括但不限于,电磁、光或者其任意合适组合。计算机可读信号介质可以是非计算机可读存储介质而且可以传送、传播或者传输用于由指令执行系统、装置或设备使用或者与其相关使用的程序的任何计算机可读介质。
包含在计算机可读介质上的程序代码可以利用任何适当的介质发送,包括但不限于无线、有线、光纤线缆、RF等或者以上所述的任意合适组合。用于执行本发明各方面的操作的计算机程序代码可以用一种或多种编程语言的任意组合来书写,包括面向对象的编程语言(例如,Java、Smalltalk、C++等)及传统的过程性编程语言(例如,“C”编程语言或者类似的编程语言)。以下参考根据本发明实施方式的方法、装置(系统)和计算机程序产品的流程图例示和/或框图来描述本发明的各方面。将理解,流程图例示和/或框图中的每一块及流程图例示和/或框图中的块组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或者其它可编程数据处理装置的处理器,来产生一种机器, 使得经计算机或其它可编程数据处理装置的处理器执行的指令产生用于实现在流程图和/ 或框图块中指定的功能/动作的装置。 这些计算机程序指令还可以存储在计算机可读介质中,这些计算机程序指令可以指示计算机、其它可编程数据处理装置或者其它设备以特定的方式运作,使得存储在计算机可读介质中的指令产生一种制造品,该制造品包括实现在流程图和/或框图块中指定的功能/动作的指令。计算机程序指令还可以加载到计算机、其它可编程数据处理装置或者其它设备上,使得在计算机、其它可编程装置或者其它设备上执行一系列操作步骤,以产生一种计算机实现处理,从而在计算机或者其它可编程装置上执行的指令提供用于实现在流程图和/ 或框图块中指定的功能/动作的处理。图I给出了用以例示根据本发明实施方式的用于管理对文件系统上的对象的访问的方法的流程图。参考图1,该方法包括两个相关的任务。该方法包括在用于支持多种 ACL类型的操作系统环境中提供一种框架,该框架使得可以根据ACL类型的关联定义来管理对文件系统上对象的访问(块102);及接受ACL类型的定义(块104)。对象可以包括文件、目录或者其它的软件或硬件资源,例如设备文件。对例如文件的各种形式的访问可以包括保存(deposit)、读取、编辑、复制、共享、删除,等等。各种操作系统和文件系统都具有对各种类型ACL的支持,其中的ACL用于控制对文件系统上的对象的访问。ACL类型是由特定ACL定义准备或者为其准备的ACL的格式。 ACL定义指定使用ACL来管理对对象的访问的策略(包括模板、格式、规则,等等)。例如,第 4版网络文件系统(‘NFSv4’)、OpenAFS, Apple填充协议(‘AFP’ )都是提供对它们各自类型 ACL的支持的文件系统,而来自国际商用机器公司(位于纽约Armonk)的AIX操作系统在其 JFS文件系统和AIX JFS2文件系统中提供对其自己ACL类型(iAIXC ACL’ )的支持。本公开内容的实施方式包括可以开发出来以便更好地适应特定环境的其它类型的ACL。例如, 基于分区的ACL类型可以用于根据虚拟操作系统环境分区的分区ID (至少部分地)约束访问。可以开发基于角色的ACL类型,以便根据基于角色的策略约束访问。基于分区和角色的ACL类型可以利用在此所公开的框架容易地实现。定制设计的ACL类型(例如,MyACL)可以针对个人用户、公司等开发,而且用于这些定制设计ACL类型的定义可以作为ACL类型的一种选择而添加到框架。框架允许跨单个操作系统中的各种应用使用多种ACL类型。在用于支持多种ACL 类型的操作系统环境中提供一种框架(块102)可以通过将ACL类型定义与操作系统的基本内核去耦合来执行。操作系统的内核空间和用户空间中的与ACL相关的接口被修改以便与框架集成。该框架实现了依赖于ACL类型的文件系统功能性。例如,该框架可以通过使用特定ACL定义实现的访问管理功能的虚拟内存映射来实现特定ACL定义的功能性。作为替代,框架可以使用插件或者内核扩展来实现特定ACL定义的访问管理功能。将ACL类型与内核去耦合的另一种途径是通过把所有基于ACL的检查带到刚好在操作系统内核之上的用户空间,例如,通过刚好在系统调用之上的包装(wrapper)中实现ACL功能性。接受ACL类型的定义(块104)可以通过存储包括ACL类型定义的模块来执行,如以下参考图6A更具体讨论的。定义可以是存储在存储器中的内核扩展的形式。内核扩展可以是在运行时动态改变内核的可加载内核模块。内核扩展提供了扩展由操作系统内核所提供的服务的能力。在这种特定的情况下,内核扩展可以插入到系统中,来支持新的ACL类型。应当指出,内核扩展通过提供用以处理与那些ACL类型相关的访问检查的接口来定义新的ACL类型。本文所公开的发明的实施方式在某种程度上是作为安装在一个或多个数据处理系统(‘计算机’)上并在其上运行的软件模块实现的,所述数据处理系统例如有服务器、工作站、平板计算机、PC、大型主机、其它管理系统等。图2给出了示例计算机202的框图。计算机202包括至少一个计算机处理器254,及计算机存储器,包括易失性随机存取存储器 (‘RAM,) 204和某种形式或某些形式的非易失性计算机存储器250,例如硬盘驱动器、光盘驱动器或者电可擦除可编程只读存储器空间(也称为‘EEPR0M’或者‘闪速’存储器)。计算机存储器可以通过系统总线240连接到处理器254和其它的系统部件。因而,软件模块可以是存储在计算机存储器中的程序指令。
操作系统210存储在计算机存储器中。操作系统210可以是任何适当的操作系统, 例如 Windows XP> Windows Vista、Mac OS X、UNIX、LINUX、Sun Microsystems 的 Solaris 或者来自国际商用机器公司(位于纽约的Armonk)的AIX。计算设备202还可以包括一个或多个输入/输出接口适配器256。输入/输出接口适配器256可以通过软件驱动器和计算机硬件实现面向用户的输入/输出,用于控制到诸如计算机显示屏的输出设备272的输出及来自诸如键盘和鼠标的输入设备270的用户输入。计算设备202还可以包括用于实现与其它设备260的数据通信的通信适配器252。 通信适配器252实现了硬件级别的数据通信,通过该适配器,一个计算机可以通过网络把数据通信发送到另一个计算机。存储在计算机存储器中的还有文件系统框架模块208,该模块可以至少部分地在内核空间中运行。文件系统框架模块208包括在用于支持多种访问控制列表(ACL)类型的操作系统环境中提供一种框架的计算机程序指令,如在此所描述的。该模块可以包括用于接收用以利用与存储器中可用的多种访问控制列表(ACL)类型定义中的一种相对应的ACL 类型的ACL来控制对文件系统对象的访问的请求的计算机程序指令,及用于响应于接收到所述利用ACL类型的ACL控制对文件系统对象的访问的请求而根据所述ACL和ACL类型定义控制对对象的访问的计算机程序指令。该模块还可以包括用于接收定义访问控制列表 (ACL)类型的ACL类型定义并把所述访问控制列表(ACL)类型定义存储在存储器中的计算机程序指令。
存储在计算机存储器中的还有内核扩展模块206,该模块可以至少部分地以内核模式运行。内核扩展模块206包括实现如在此所述的ACL类型的定义的计算机程序指令。 该模块可以包括用于根据特定ACL类型的ACL来管理对文件的访问的计算机程序指令。个人开发者可以开发他们自己的内核扩展模块,来定义期望的ACL类型。例如,内核扩展可以具有定义的钩子,例如“添加/编辑ACL”钩子,这允许对所定义的ACL类型的操控;“访问检查/验证”钩子,这管理ACL类型的验证;“移除/删除”钩子,这移除ACL类型;“注册/ 安装ACL类型”钩子,这向内核注册ACL类型,等等。内核扩展模块206可以在运行时动态加载。文件系统框架模块208可以结合到操作系统210中,包括在内核中。文件系统框架模块208可以实现为运行在单独软件层中或者在相同层中的一个或多个子模块。尽管在图2中描绘成结合到操作系统210中,但是文件系统框架模块208或者构成文件系统框架模块208的一个或多个子模块也可以与操作系统210分开。特别地,系统调用的启用 (invocation)可以在高级代码(例如,应用程序代码)中实现。例如,对访问文件系统对象的请求可以通过由操作系统内核提供的、与文件系统相关的系统调用来进行。在有些实施方式中,文件系统框架模块208可以在软件堆栈中、在硬件中、在固件中(例如,在BIOS中) 或者以可以被本领域普通技术人员想到的任何其它方式实现。图3是例示了根据本发明一个实施方式的用于管理对文件系统上的对象的访问的方法的数据流程图。系统通过接收用以利用与存储器中可用的多种ACL类型定义314中的一种相对应的ACL类型的ACL310来控制对文件系统对象316的访问的请求304开始(块 302)。接收用以控制对文件系统对象316的访问的请求304 (块302)可以包括接收用以创建或存储对象316的请求304。请求可以是以下任何一种操作创建、读取、写入、执行、改变所有关系、改变访问时间、改变ACL内容,等等。在有些实现中,该系统配置成把接收到用以存储对象316的请求解释为用以控制访问的请求,或者接收到用以存储对象316的请求自动地生成用以利用ACL 310控制对该对象316的访问的请求304,例如在其中ACL 310生成是对象316创建的缺省操作的配置中。在其它实现中,存储机制中的用户选择或者通过命令行接口等接收到的特定命令生成请求304。用以控制对文件系统对象316的访问的请求304可以关于已经存储的对象316,有可能已经存储了比典型用户会话持续时间长的一段时间,例如几天、几周或者几年的时间段。响应于接收到用以利用所述ACL类型的ACL 310控制对文件系统对象316的访问的请求304,系统根据ACL 310和ACL类型定义314来控制对对象316的访问(块306)。根据ACL 310和ACL类型定义314控制对对象316的访问(块306)可以包括与对象316相关联地存储ACL类型的指示符318 (块308)。例如,指示符318可以是键入的ACL类型的数字值、指针、对应于ACL类型的位位置中的标志、定义的文本值或变量名称,等等。图4A和4B例示了用于与对象相关联地存储ACL类型的指示符318的数据结构。 参考图4A,文件400包括一组模式位404。可扩展位402表示ACL是否与对象相关联。在这个实例中,可扩展位402设置成1,指示ACL与对象相关联。扩展属性是使用户能够把计算机文件与不严格地由所述文件系统定义的数据相关联的数据结构。指示符318可以存储在扩展属性中。参考图4B,扩展属性450包括与相关联的值 454、458、462、466、470 成对的名称 452、456、460、464、468。名称 452、456、460、464,468是包括对应于预定义的ACL类型的文本值的指示符。相关联的值454、458、462、 466、470包括对应于包含所命名类型的ACL的存储器地址的指针。例如,名称NFSv4452与 MyACL 464分别指示对应于可以在存储器中获得的ACL类型定义的ACL类型NFSv4ACL和名称为MyACL的定制ACL类型。名称AIXC ACL 456、分区ACL 460和ROLE ACL 468各自都对应于空值458、462、470,指示这些类型的ACL不管理文件。返回到图3,响应于接收到用以访问对象316的请求304,系统根据指示符318检索ACL类型定义314并根据ACL 310和所检索到的ACL类型定义314来管理对对象316的访问(块312)。根据指示符318检索ACL类型定义314可以通过分解(resolve)指示符318 来执行。例如,如果指示符318是键入的数字值,则根据指示符318检索ACL类型定义314 可以包括在查找表中执行对所键入的数字值的查找,并遵循与所键入的数字值相关联的指针到达包含ACL类型定义314的存储区。根据ACL和ACL类型定义控制对对象的访问(块304)可以通过所述框架来执行。 图5A和图5B给出了用以例示根据本发明实施方式的用于管理对文件系统上的对象的访问的框架的数据流程图。应用程序例如可以启用文件系统操作系统调用502的实例,例如,创建、打开、重命名、改变ACL内容、链接或者去链接调用,或者任何其它可以执行作为操作的一部分的访问检查的文件系统相关操作。当在执行过程中被启用时,文件系统操作系统调用502的实例请求从内核对创建系统调用函数504的执行。创建系统调用504利用ACL来管理对文件的访问。在执行真正的文件系统操作之前,该系统调用将首先检查用户/处理是否得到允许以访问文件。这将利用ACL框架508进行。创建系统调用504对框架508进行系统调用 (506),以在任何相关的ACL之下执行访问验证。例如,通过读取设置成I的模式位402,框架508检测指示符。框架508从储存器, 例如扩展属性450,检索ACL类型的指示符510。框架508还检索对应于ACL类型510的 ACL (或者指定ACL位置518的指针512)。如果定义了多个ACL类型,则框架检索每个ACL 类型(及对应于它们的任何ACL)。对于每种ACL类型516a、516b,框架508先前都动态加载了实现该ACL类型定义的内核扩展。通过在其被链接编辑的时候指定导出文件,内核扩展提供附加的内核服务和系统调用。该导出文件包含要添加到内核命名空间的符号的列表。当加载新的内核扩展时, 由该内核扩展导出的任何符号都添加到内核命名空间,并且可以被所有后续加载的内核扩展获得。类似地,由内核扩展导出的系统调用可以被所有后续加载的应用程序或者共享对象获得。通过链接520a、520b可加载内核模块530a、530b以实现内核扩展,函数指针动态地加载内核扩展。可加载的内核模块530a、530b可以是可执行和可链接格式(‘ELF’ )的对象文件。 链接对象文件在可执行文件中分解它们的符号与结果。可加载的内核模块530a导出诸如系统调用514a的调用,该调用提供了具有ACL类型516a的ACL的功能性。可加载的内核模块530b导出诸如系统调用514b的调用,该调用提供了具有ACL类型516b的ACL的功能性。检索ACL类型516b的指示符的框架启用系统调用514b。当被启用时,系统调用514b的实例请求从可加载内核模块530b对管理ACL类型516b功能的访问的执行。一旦确定了访问权限,调用就返回到创建系统调用504。图6A是例示了根据本发明一种实施方式的用于管理对文件系统上的对象的访问的方法的流程图。该方法包括接收定义ACL类型的ACL类型定义(块602),及把ACL类型定义存储在存储器中(块604)。接收定义ACL类型的ACL类型定义(块602)可以通过接收作为文件的ACL类型定义来执行。把ACL类型定义存储在存储器中(块604)可以包括把 ACL类型定义存储在长期非易失性存储器中。可以通过只把那些需要的元素(定义)加载到活动存储器中来最小化用于内核的存储器占用面积。图6B是例示了根据本发明一种实施方式的用于管理对文件系统上的对象的访问的方法的流程图。该方法包括接收定义ACL类型的ACL类型定义(块602),及把ACL类型定义存储在存储器中(块604),如以上参考图6A所描述的。该方法还包括接收用以利用与存储器中可用的多种ACL类型定义中的一种相对应的ACL类型的ACL来控制对文件系统对象的访问的请求(块302);及根据ACL和ACL类型定义来控制对对象的访问(块306),如以上参考图3所描述的。图6B的方法允许ACL类型的外部定义和便于通过ACL框架实现外部定义的ACL类型。应当理解,在此所公开的创新性概念能够有许多修改。就这种修改属于所附权利要求及其等同物的范围之内而言,它们是要被本专利覆盖的。
权利要求
1.一种用于控制对文件系统的访问的计算机实现方法,该方法包括接收用以利用与存储器中可用的多种访问控制列表(ACL)类型定义中的一种相对应的 ACL类型的ACL来控制对文件系统对象的访问的请求 '及响应于接收到利用所述ACL类型的ACL来控制对文件系统对象的访问的请求,通过与所述对象相关联地存储所述ACL类型的指示符,而根据所述ACL和ACL类型定义控制对所述对象的访问;及响应于接收到访问所述对象的请求,根据所述指示符检索所述ACL类型定义,并根据所述ACL和检索出的ACL类型定义来管理对所述对象的访问。
2.如权利要求I所述的方法,还包括,在接收到利用所述ACL类型的ACL控制对所述文件系统对象的访问的请求之前接收定义所述访问控制列表(ACL)类型的ACL类型定义;及把所述访问控制列表(ACL)类型定义存储在存储器中。
3.如权利要求I所述的方法,其中,接收所述用以控制对所述文件系统对象的访问的请求包括接收用以存储所述对象的请求。
4.如权利要求I所述的方法,其中,接收所述用以控制对所述文件系统对象的访问的请求包括接收用以创建所述对象的请求。
5.如权利要求I所述的方法,其中,与所述对象相关联地存储所述ACL类型的指示符包括把所述指示符存储为所述对象的扩展属性。
6.如权利要求5所述的方法,其中,所述ACL类型定义包括实现所述ACL类型的内核扩展。
7.一种系统,包括适于执行根据任何上述方法权利要求所述的方法的所有步骤的装置。
8.一种计算机程序,包括用于执行根据任何上述方法权利要求所述的方法的所有步骤的指令,其中所述计算机程序在计算机系统上执行。
全文摘要
用于管理对文件系统上的对象的访问的方法、系统与产品。在一种通用的实施方式中,该方法包括在用于支持多种访问控制列表(ACL)类型的操作系统环境中提供一种框架,由此使得可以根据关联的ACL类型定义来管理对文件系统上的对象的访问;及接受ACL类型的定义。相关联的定义可以包括内核扩展。
文档编号G06F17/30GK102612694SQ201080050569
公开日2012年7月25日 申请日期2010年11月23日 优先权日2009年11月25日
发明者M·坎达萨米, M·瓦达吉瑞, R·维得亚 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1