CN102456113B - 一种软件包编译平台针对用户设置权限的方法 - Google Patents
一种软件包编译平台针对用户设置权限的方法 Download PDFInfo
- Publication number
- CN102456113B CN102456113B CN201110340405.6A CN201110340405A CN102456113B CN 102456113 B CN102456113 B CN 102456113B CN 201110340405 A CN201110340405 A CN 201110340405A CN 102456113 B CN102456113 B CN 102456113B
- Authority
- CN
- China
- Prior art keywords
- authority
- user
- koji
- version
- check module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明涉及一种软件包编译平台设置用户权限的方法,本发明是在软件包编译平台软件koji-1.6.0版本的基础上进行的二次开发,涉及到一种用户权限设置的方法,koji对用户权限的设置是通过一个配置文件来配置,本发明是在这个配置文件中增加一条权限配置,然后在权限检查代码中增加一个权限检查模块来检查这个权限配置,用这样的方式来实现对用户权限的设置。
Description
技术领域
本发明是linux平台下rpm包编译平台上使用的一项技术。
背景技术
linux发行版由数量庞大的软件包组成,为了开发维护这些软件包就需要一个统一的平台进行管理,这样包编译平台应运而生。在linux发行版里,有许多的软件包是用rpm来进行管理的,本发明也是在rpm软件包编译平台上改进的一项技术。
在linux众多的发行版中,每个版本都有自己的编译平台,他们利用这个平台来开发和维护自己的软件包,目前比较成熟的有 koji编译平台,opensuse build system等。不管是那种编译平台,他们都能维护多个不同的版本,在开发和维护不同版本的时候给用户开放一个什么权限是个很重要的问题,因为在linux发行版中,大部分的开发人员都是分布在世界各地的一些自由软件开发人员,对于这样的一个群体,我们在开放权限的时候一定要制定详细的权限策略,以防软件包被恶意的更改,本发明也是基于这样一种目的来控制开发人员的权限。
目前koji就是一个比较成熟的编译平台,koji对于开发人员有权限控制策略,具体来说,koji编译系统在安装完成并启动服务后就处于等待用户请求的状态,这个时候所有的配置文件都已经存储起来,用户在通过koji客户端发送请求后koji首先是检查当前的用户的身份,身份是由koji客户端的证书来决定,koji的客户端需要koji服务器颁发一个证书,有了这个证书才能链接上koji服务器。koji服务器对用户的身份验证完成后就会去检查其权限,本方法也就是在这里进行的开发。koji编译系统有自己的权限控制,但它的权限控制有一个问题,一旦一个版本开放给开发人员,那么所有的开发人员都可以去修改这个版本下的软件包,这样对于社区开发是可以的,但对于某个公司发行版本就不太合适,比如一个公司有几个开发组,每个开发组开发一个版本,版本都放到koji上维护,如果不做进一步的权限控制,那么一个版本的开发人员就可以去修改其他的版本的软件包,对于版本开发的对立性就会造成威胁。本发明正是为了解决这个问题,可以提高编译平台的安全性和版本间的独立性。
发明内容
鉴于目前编译平台的权限控制的缺陷,本发明的目的就是设计一种权限控制的方法来控制软件包编译平台的用户权限。为了实现上述目的,软件包编译平台针对用户设置权限的方法包括下面步骤:
(1)在权限配置文件中增加一条权限配置;
(2)在权限验证代码中增加一个权限检查模块;
(3)在用户请求执行任务时,该平台调用这个权限检查模块依据修改后的权限配置文件来判断请求者是否拥有其请求的权限。
其中步骤 (1)是指在软件的权限配置文件中重新定义一条所述权限配置,该权限配置包括用户ID以及版本信息,步骤(2)的权限检查模块定义了该权限配置的格式的关键字段,该平台调用该权限检查模块时会读取这条权限配置,然后获取关键字段后面的内容,再与请求者以及请求者所求操作的版本对比。
其中步骤(2)的具体方法是修改权限验证代码,在里面加入一个子模块作为权限检查模块,该子模块负责对新增加的该权限配置进行解析并返回是否通过。
其中步骤(3)具体实现方式如下:该权限检查模块首先从配置文件中读取权限配置,然后根据用户的请求进行分析判断,如果用户的请求符合权限配置并且允许执行则通过检查并开始执行任务,否则返回无权限的错误。
当软件包编译平台管理多个不同的系统版本时,通过不同的权限配置去设置用户对某个具体的版本的操作权限,提高版本间的安全性和独立性。
在操作中的做法,需要做以下的具体工作:
1)、获取koji软件包的源码,修改koji源码包中的kojihub.py源码文件,增加一个权限检查模块。
2)、使用diff工具生成patch文件,将patch文件加入到源码包。(注:在软件开发过程中,在修改源码后一般都是通过patch的形式来提交我们的修改,也就是说开发人员在修改完源码之后将修改前后的两个文件执行diff -Nuar kojihub.py kojihub.py.old 生成patch文件。)
3)、编译源码包,编译完成之后将会生成rpm包。
4)、安装修改后的koji软件包。
5)、修改koji-hub配置文件,配置用户权限。
6)、启动koji相关服务。
开发人员在向koji请求执行任务的时候就会根据此配置来判断用户是否具有相应的权限。
附图说明
图1为本发明增加用户权限控制后的流程图。
图2为现有技术koji原本的流程图。
具体实施方式
为使本发明的特征及优点能得到更清楚的了解,以下结合附图做更加详细的说明:如图1所述,在koji系统部署完成后就可以对外提供服务了,这时候开发人员就可以向koji的管理员申请开发权限,koji管理员负责对开发人员颁发证书、设置权限等。权限设置即是在koji的配置文件中加入新的权限设置策略,然后开发人员就可以向koji服务器提交任务请求,提交成功后,koji首先会去检查提交请求的用户是什么类型,要么是管理员权限要么是普通用户权限,如果是普通用户权限接着就会去检查是否有执行请求的权限,这个是koji本身就有的权限,也是在koji配置文件中设置,一般的请求有编译请求,tag请求(既将某个包加入或者移出某个版本)等,这个判断完成后就会依据结果决定是否执行相应的请求。本发明是在这个koiji配置文件中加入一条新的配置,下面举例说明其格式:
[policy]
tag =
has_perm admin :: allow
user wubin tag dist-f13-test :: allow
all::deny
build_from_srpm =
has_perm admin :: allow
user wubin tag dist-f13-test :: deny
all::deny
这是权限配置写在koji配置文件中的具体书写格式,可以看出其中包括了用户名和版本信息,而权限检查模块定义了该权限配置的格式的关键字段,借以读取上述权限配置,然后获取关键字段后面的内容,tag 表示将包加入或移除某个版本的权限,build_from_srpm 表示设置编译权限,本方法增加的规则为 user wubin tag dist-f13-test :: allow,user后面跟着是koji编译平台用户,tag后跟着是版本,:: 后的是设置允许还是禁止。有了这样一条权限配置之后我们就可以对用户设置对某个版本的操作权限了。koji运行时对于权限的检查步骤如下:
1)、koji服务器启动时开始读取koji配置文件中的权限配置选项并将之存储到内存中。
2)、koji在收到koji客户端发出请求后,由权限检查模块开始执行一系列的执行请求前的检查。
3)、根据检查的结果来决定是否执行改请求。
其中步骤2做进一步的说明,koji的权限检查模块会通过xmlrpc接受到从koji客户端传递过来的命令行参数,权限检查模块对参数进行分析后决定执行什么样的响应函数,比如,如果用户是编译请求,koji就会执行build函数,build函数在执行前会调用一个check-policy的函数,这个函数首先对koji配置文件中的权限配置进行截取分析,例如,截取到第一个字段是user,这个时候就会去调用一个UserTest的函数,这个函数也就是本方法新增加的代码(其属于权限检查模块的中的一部分),UserTest函数会将当前的用户、要操作的版本与配置文件中写的用户、版本进行比较,结果一致再看是否允许也就是(::后的字段),如果检查都通过就开始执行请求。
图2也就是没使用本方法的koji的流程图,与图1相比就是少了一个对某一具体用户权限的检查,其他的与图1一样,这里不再做出描述。
Claims (4)
1.一种koji编译平台上用户权限的设置方法,步骤包括:
步骤(1)、在koji权限配置文件中增加一条权限配置;
步骤(2)、修改koji源码包在权限验证代码中增加一个权限检查模块;
步骤(3)、在用户请求执行任务时,该koji编译平台调用这个权限检查模块依据修改后的权限配置文件来判断请求者是否拥有其请求的权限;
该权限检查模块接受到客户端传递过来的命令行参数,该权限检查模块对参数进行分析后决定执行什么样的响应函数,在确定响应函数后执行该响应函数前,由该响应函数调用一个check-policy函数,以对配置文件中的权限配置进行截取分析,当截取到的第一个字段是user时,该权限检查模块再调用一个UserTest的函数,该UserTest函数将当前的用户、请求操作的版本名称与配置文件中写入的用户名、版本信息进行比较,结果一致再看是否允许执行该用户的请求。
2.如权利要求1所述的方法,其特征在于:其中步骤(2)的具体方法是修改权限验证代码,在里面加入一个子模块作为权限检查模块,该子模块负责对新增加的该权限配置进行解析并返回是否通过。
3.如权利要求1所述的方法,其特征在于:其中步骤(3)具体实现方式如下:该权限检查模块首先从配置文件中读取权限配置,然后根据用户的请求进行分析判断,如果用户的请求符合权限配置并且允许执行则通过检查并开始执行任务,否则返回无权限的错误。
4.如权利要求1所述的方法,其特征在于:当软件包编译平台管理多个不同的系统版本时,通过不同的权限配置去设置用户对某个具体的版本的操作权限,提高版本间的安全性和独立性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110340405.6A CN102456113B (zh) | 2011-10-31 | 2011-10-31 | 一种软件包编译平台针对用户设置权限的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110340405.6A CN102456113B (zh) | 2011-10-31 | 2011-10-31 | 一种软件包编译平台针对用户设置权限的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102456113A CN102456113A (zh) | 2012-05-16 |
CN102456113B true CN102456113B (zh) | 2014-11-05 |
Family
ID=46039293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110340405.6A Active CN102456113B (zh) | 2011-10-31 | 2011-10-31 | 一种软件包编译平台针对用户设置权限的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102456113B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102638444A (zh) * | 2011-06-10 | 2012-08-15 | 吴东辉 | 应用软件的网络终端式构造方法和系统 |
CN103116721B (zh) * | 2013-02-05 | 2015-09-02 | 中标软件有限公司 | 一种实现Koji认证的方法及其模块 |
CN105099665A (zh) * | 2015-09-15 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种命令行界面cli权限管理方法和系统 |
CN106055377A (zh) * | 2016-06-03 | 2016-10-26 | 北京奇虎科技有限公司 | 一种实现分布式编译的方法和分布式编译系统 |
CN106126980A (zh) * | 2016-08-03 | 2016-11-16 | 北京英贝思科技有限公司 | 一种代码保护方法及系统 |
CN107656737A (zh) * | 2017-10-09 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种基于Git工具的增量编译方法、装置、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526513B1 (en) * | 1999-08-03 | 2003-02-25 | International Business Machines Corporation | Architecture for dynamic permissions in java |
CN101504604A (zh) * | 2009-03-13 | 2009-08-12 | 张昊 | 一种权限管理验证应用方法 |
-
2011
- 2011-10-31 CN CN201110340405.6A patent/CN102456113B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6526513B1 (en) * | 1999-08-03 | 2003-02-25 | International Business Machines Corporation | Architecture for dynamic permissions in java |
CN101504604A (zh) * | 2009-03-13 | 2009-08-12 | 张昊 | 一种权限管理验证应用方法 |
Non-Patent Citations (1)
Title |
---|
蒋鑫.第28章使用Git协议-第30章Gitolite服务架设.《Git权威指南》.2011,第406页第1-2行,第409页第1-2行,23-27行,第410页1-3行及表29-1,第413页第1-2,21-22行,第423页第20行-第424页第16行,第425页第2-3,20-21行. * |
Also Published As
Publication number | Publication date |
---|---|
CN102456113A (zh) | 2012-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fuchs et al. | Scandroid: Automated security certification of android applications | |
CN102456113B (zh) | 一种软件包编译平台针对用户设置权限的方法 | |
Smalley et al. | Security enhanced (se) android: bringing flexible mac to android. | |
Chaudhuri | Language-based security on Android | |
KR101033620B1 (ko) | 신뢰된 코드 그룹들 | |
US8024564B2 (en) | Automating configuration of software applications | |
AU2007325237B2 (en) | Compiling executable code into a less-trusted address space | |
Schoepe et al. | Explicit secrecy: A policy for taint tracking | |
Disney et al. | Gradual information flow typing | |
US20060129880A1 (en) | Method and system for injecting faults into a software application | |
US9871800B2 (en) | System and method for providing application security in a cloud computing environment | |
CN110022311B (zh) | 一种基于攻击图的云外包服务数据泄露安全测试用例自动化生成方法 | |
Armando et al. | Breaking and fixing the android launching flow | |
US20070022411A1 (en) | System and method for compiling program code ahead of time | |
Antonino et al. | Specification is law: Safe creation and upgrade of ethereum smart contracts | |
Mustafa et al. | Understanding the implemented access control policy of Android system services with slicing and extended static checking | |
Alam et al. | Analysis of existing remote attestation techniques | |
Antonino et al. | A refinement-based approach to safe smart contract deployment and evolution | |
Spoto et al. | On the use of generic types for smart contracts | |
Mansour et al. | Regression test selection for C# programs | |
Qian et al. | Research on Remote Attestation Technology Based on Formal Software Behavior Measurement | |
Costa et al. | Application Security for Mobile Devices | |
ROSSI | SELinux policies for fine-grained protection of Android apps | |
Yao et al. | Security Unit Test | |
Roscoe | Specification is Law: Safe Creation and Upgrade of Ethereum Smart Contracts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |