国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      執(zhí)行系統(tǒng)調(diào)用的方法及裝置與流程

      文檔序號(hào):11276727閱讀:340來(lái)源:國(guó)知局
      執(zhí)行系統(tǒng)調(diào)用的方法及裝置與流程

      本申請(qǐng)涉及系統(tǒng)調(diào)用技術(shù),具體涉及一種執(zhí)行系統(tǒng)調(diào)用的方法及裝置。本申請(qǐng)同時(shí)涉及另一種執(zhí)行系統(tǒng)調(diào)用的方法及裝置。



      背景技術(shù):

      為了保證安全性,操作系統(tǒng)(例如linux)的運(yùn)行空間通??梢员粍澐譃閮?nèi)核空間與用戶空間,它們各自運(yùn)行在不同的級(jí)別中,邏輯上相互隔離。應(yīng)用程序在通常情況下不允許訪問(wèn)內(nèi)核數(shù)據(jù),也無(wú)法使用內(nèi)核函數(shù),它們只能在用戶空間操作用戶數(shù)據(jù),調(diào)用用戶空間函數(shù)。當(dāng)用戶程序需要獲得系統(tǒng)服務(wù)或者訪問(wèn)系統(tǒng)核心功能時(shí),這時(shí)就需要執(zhí)行系統(tǒng)調(diào)用(syscall)。

      執(zhí)行系統(tǒng)調(diào)用時(shí)通常通過(guò)軟中斷機(jī)制陷入內(nèi)核,即進(jìn)入內(nèi)核空間,然后才能執(zhí)行相應(yīng)的系統(tǒng)服務(wù)例程。從邏輯上來(lái)說(shuō),系統(tǒng)調(diào)用可被看成是內(nèi)核與用戶空間交互的接口:把來(lái)自用戶空間的請(qǐng)求傳達(dá)給內(nèi)核,待內(nèi)核把請(qǐng)求處理完畢后再將處理結(jié)果送回給用戶空間。

      在具體應(yīng)用中,操作系統(tǒng)通常提供大量的系統(tǒng)調(diào)用,這些系統(tǒng)調(diào)用都暴露在用戶空間,一方面在大多數(shù)應(yīng)用程序的整個(gè)生命周期內(nèi),很多系統(tǒng)調(diào)用并沒(méi)有被調(diào)用,另一方面,暴露在用戶空間的系統(tǒng)調(diào)用有可能存在各種安全漏洞,如果被惡意利用,則可能為整個(gè)系統(tǒng)帶來(lái)安全隱患,因此有必要對(duì)應(yīng)用程序執(zhí)行系統(tǒng)調(diào)用加以限制。例如,linux系統(tǒng)支持一種簡(jiǎn)潔的seccomp(securecomputing—安全計(jì)算模式)沙箱機(jī)制,提供了一種安全運(yùn)行模式,在該模式下的應(yīng)用程序進(jìn)程只能調(diào)用4種系統(tǒng)調(diào)用,即read、write、exit和sigreturn,否則應(yīng)用程序便會(huì)被終止。

      seccomp沙箱機(jī)制雖然實(shí)現(xiàn)了對(duì)系統(tǒng)調(diào)用的限制,但是由于其對(duì)所有被控制進(jìn)程是一視同仁的,不能做到差異化控制;而且由于僅開(kāi)放了read、write、exit、sigreturn這4個(gè)系統(tǒng)調(diào)用,不具有可擴(kuò)展性,無(wú)法滿足用戶空間對(duì)系統(tǒng)調(diào)用的合理訪問(wèn)需求。



      技術(shù)實(shí)現(xiàn)要素:

      本申請(qǐng)實(shí)施例提供一種執(zhí)行系統(tǒng)調(diào)用的方法及裝置,以解決現(xiàn)有技術(shù)在對(duì)系統(tǒng)調(diào)用進(jìn)行限制時(shí)無(wú)法實(shí)現(xiàn)差異化控制、以及開(kāi)放的系統(tǒng)調(diào)用數(shù)量無(wú)法滿足訪問(wèn)需求的問(wèn)題。本申請(qǐng)實(shí)施例還提供另一種執(zhí)行系統(tǒng)調(diào)用的方法及裝置。

      本申請(qǐng)?zhí)峁┮环N執(zhí)行系統(tǒng)調(diào)用的方法,包括:

      接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求;

      判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;

      若具有,則允許所述執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用。

      可選的,所述判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,包括:

      獲取所述系統(tǒng)調(diào)用所屬類別;

      獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;

      根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限;

      其中,所述系統(tǒng)調(diào)用所屬類別、以及所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限是預(yù)先設(shè)定的。

      可選的,在所述接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求之前,執(zhí)行下述操作:

      根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,指定所述系統(tǒng)調(diào)用所屬類別;

      設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限、以及所述系統(tǒng)調(diào)用所屬類別分別采用二進(jìn)制比特串描述,其長(zhǎng)度分別與系統(tǒng)調(diào)用的類別數(shù)一致,所述兩個(gè)二進(jìn)制比特串中各比特位分別與相同序號(hào)的系統(tǒng)調(diào)用類別相對(duì)應(yīng);其中,描述所述訪問(wèn)權(quán)限的二進(jìn)制比特串中的每個(gè)比特位的值表示所述執(zhí)行者是否具有對(duì)相應(yīng)類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,描述所述系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串中的每個(gè)比特位的值表示所述系統(tǒng)調(diào)用是否屬于相應(yīng)類別,并且表示具有對(duì)相應(yīng)類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限的值、與表示所述系統(tǒng)調(diào)用屬于相應(yīng)類別的值一致;

      所述根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限,包括:

      將描述所述訪問(wèn)權(quán)限的二進(jìn)制比特串與描述所述系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串,逐位進(jìn)行位運(yùn)算;

      根據(jù)運(yùn)算結(jié)果判定所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,描述所述訪問(wèn)權(quán)限的二進(jìn)制比特串中的1,表示所述執(zhí)行者具有對(duì)相應(yīng)類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,0表示不具有;描述所述系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串中的1,表示所述系統(tǒng)調(diào)用屬于相應(yīng)類別,0表示不屬于;

      所述逐位進(jìn)行位運(yùn)算,包括:逐位執(zhí)行按位與操作;

      所述根據(jù)運(yùn)算結(jié)果判定所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限,包括:若執(zhí)行結(jié)果不全為0,則判定所述執(zhí)行者具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,采用如下方式實(shí)現(xiàn):將所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限與其身份標(biāo)識(shí)信息對(duì)應(yīng)存儲(chǔ);

      所述獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,包括:根據(jù)所述執(zhí)行者的身份標(biāo)識(shí)信息獲取所述執(zhí)行者的所述訪問(wèn)權(quán)限。

      可選的,所述身份標(biāo)識(shí)信息包括:所述執(zhí)行者的信任狀信息。

      可選的,采用如下方式獲取所述身份標(biāo)識(shí)信息:從所述執(zhí)行者的運(yùn)行上下文信息中獲取其身份標(biāo)識(shí)信息。

      可選的,所述設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,包括:

      在創(chuàng)建所述執(zhí)行者時(shí),按照預(yù)設(shè)授權(quán)方案設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;或者,用創(chuàng)建者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限設(shè)置所述執(zhí)行者的相應(yīng)訪問(wèn)權(quán)限。

      可選的,所述設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,還包括:

      在創(chuàng)建所述執(zhí)行者之后、在運(yùn)行所述執(zhí)行者之前,按照預(yù)設(shè)方式降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述按照預(yù)設(shè)方式降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,包括:

      根據(jù)所述執(zhí)行者的身份類別以及系統(tǒng)配置文件中針對(duì)所述身份類別的權(quán)限 配置信息,降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;和/或,

      根據(jù)所述執(zhí)行者所屬應(yīng)用程序的配置文件中的權(quán)限申明信息,降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,還包括:

      所述執(zhí)行者在運(yùn)行過(guò)程中,在加載運(yùn)行不可信代碼之前降低其對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,還包括:

      在所述不可信代碼運(yùn)行完畢后,恢復(fù)所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,還包括:

      所述執(zhí)行者在運(yùn)行過(guò)程中,在加載運(yùn)行可信代碼之前提高其對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,在所述執(zhí)行者運(yùn)行之前,在設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限時(shí),還相應(yīng)設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)能力;所述執(zhí)行者具有訪問(wèn)權(quán)限的系統(tǒng)調(diào)用類別集合是其具有訪問(wèn)能力的系統(tǒng)調(diào)用類別集合的子集;

      所述提高其對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,包括:在所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)能力之內(nèi),提高所述執(zhí)行者的訪問(wèn)權(quán)限。

      可選的,在所述接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求之后,包括:

      根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定其是否對(duì)應(yīng)于預(yù)設(shè)的虛擬系統(tǒng)調(diào)用;

      若是,則判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述虛擬系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,并在具有時(shí),允許所述執(zhí)行者執(zhí)行所述虛擬系統(tǒng)調(diào)用;

      若否,則執(zhí)行所述判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限的步驟。

      可選的,所述系統(tǒng)調(diào)用的相關(guān)信息,包括:系統(tǒng)調(diào)用名稱及參數(shù)值。

      可選的,所述執(zhí)行者包括:可獨(dú)立運(yùn)行的基本單元;所述可獨(dú)立運(yùn)行的基本單元包括:線程或者進(jìn)程。

      相應(yīng)的,本申請(qǐng)還提供一種執(zhí)行系統(tǒng)調(diào)用的裝置,包括:

      請(qǐng)求接收單元,用于接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求;

      權(quán)限判斷單元,用于判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;

      執(zhí)行允許單元,用于當(dāng)所述訪問(wèn)權(quán)限判斷單元的輸出為是時(shí),允許所述執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用。

      可選的,所述權(quán)限判斷單元,包括:

      類別獲取子單元,用于獲取所述系統(tǒng)調(diào)用所屬類別;

      訪問(wèn)權(quán)限獲取子單元,用于獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;

      判斷執(zhí)行子單元,用于根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述裝置還包括:

      類別指定單元,用于在所述請(qǐng)求接收單元工作之前,根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,指定所述系統(tǒng)調(diào)用所屬類別;

      權(quán)限設(shè)置單元,用于設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述判斷執(zhí)行子單元,具體用于將描述所述訪問(wèn)權(quán)限的二進(jìn)制比特串與描述所述系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串,逐位進(jìn)行位運(yùn)算,并根據(jù)運(yùn)算結(jié)果判定所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述判斷執(zhí)行子單元,具體用于將描述所述訪問(wèn)權(quán)限的二進(jìn)制比特串與描述所述系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串,逐位執(zhí)行按位與操作,并當(dāng)執(zhí)行結(jié)果不全為0時(shí)判定所述執(zhí)行者具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元,具體用于將所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限與其身份標(biāo)識(shí)信息對(duì)應(yīng)存儲(chǔ);

      所述訪問(wèn)權(quán)限獲取子單元,具體用于根據(jù)所述執(zhí)行者的身份標(biāo)識(shí)信息獲取所述執(zhí)行者的所述訪問(wèn)權(quán)限。

      可選的,所述訪問(wèn)權(quán)限獲取子單元,具體用于從所述執(zhí)行者的運(yùn)行上下文信息中獲取其身份標(biāo)識(shí)信息,并根據(jù)所述身份標(biāo)識(shí)信息獲取所述執(zhí)行者的所述訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元包括:

      權(quán)限繼承子單元,用于在創(chuàng)建所述執(zhí)行者時(shí),按照預(yù)設(shè)授權(quán)方案設(shè)置所述 執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;或者,用創(chuàng)建者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限設(shè)置所述執(zhí)行者的相應(yīng)訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元還包括:

      運(yùn)行前權(quán)限降低子單元,用于在創(chuàng)建所述執(zhí)行者之后、在運(yùn)行所述執(zhí)行者之前,按照預(yù)設(shè)方式降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述運(yùn)行前權(quán)限降低子單元包括:

      第一降低子單元,用于根據(jù)所述執(zhí)行者的身份類別以及系統(tǒng)配置文件中針對(duì)所述身份類別的權(quán)限配置信息,降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;和/或,

      第二降低子單元,用于根據(jù)所述執(zhí)行者所屬應(yīng)用程序的配置文件中的權(quán)限申明信息,降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元還包括:

      運(yùn)行后權(quán)限降低子單元,用于所述執(zhí)行者在運(yùn)行過(guò)程中,在加載運(yùn)行不可信代碼之前降低其對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元還包括:

      權(quán)限恢復(fù)單元,用于在所述不可信代碼運(yùn)行完畢后,恢復(fù)所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元還包括:

      權(quán)限提高子單元,用于所述執(zhí)行者在運(yùn)行過(guò)程中,在加載運(yùn)行可信代碼之前提高其對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限降低子單元和所述運(yùn)行前權(quán)限降低子單元,還分別用于相應(yīng)設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)能力;

      所述權(quán)限提高子單元,具體用于在所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)能力之內(nèi),提高所述執(zhí)行者的訪問(wèn)權(quán)限。

      可選的,所述裝置還包括:

      虛擬調(diào)用確定單元,用于在所述請(qǐng)求接收單元接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求后,根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定其是否對(duì)應(yīng)于虛擬系統(tǒng)調(diào)用,并在不對(duì)應(yīng)時(shí),觸發(fā)所述權(quán)限判斷單元工作;

      虛擬調(diào)用權(quán)限判斷單元,用于當(dāng)所述虛擬調(diào)用確定單元的輸出為是時(shí),判 斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述虛擬系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,并在具有時(shí),允許所述執(zhí)行者執(zhí)行所述虛擬系統(tǒng)調(diào)用。

      此外,本申請(qǐng)還提供一種執(zhí)行系統(tǒng)調(diào)用的方法,包括:

      接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求;

      根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定待執(zhí)行的目標(biāo)調(diào)用;

      判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述目標(biāo)調(diào)用的訪問(wèn)權(quán)限;

      若具有,則允許所述執(zhí)行者執(zhí)行所述目標(biāo)調(diào)用。

      可選的,所述根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定待執(zhí)行的目標(biāo)調(diào)用,包括:

      當(dāng)所述系統(tǒng)調(diào)用對(duì)應(yīng)于預(yù)設(shè)的虛擬系統(tǒng)調(diào)用時(shí),將所述虛擬系統(tǒng)調(diào)用作為所述目標(biāo)調(diào)用,否則將所述系統(tǒng)調(diào)用作為所述目標(biāo)調(diào)用。

      可選的,所述系統(tǒng)調(diào)用的相關(guān)信息包括:系統(tǒng)調(diào)用名稱及參數(shù)值。

      可選的,所述判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述目標(biāo)調(diào)用的訪問(wèn)權(quán)限,包括:

      獲取所述目標(biāo)調(diào)用所屬類別;

      獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;

      根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述目標(biāo)調(diào)用所屬類別的訪問(wèn)權(quán)限;

      其中,所述目標(biāo)調(diào)用所屬類別、以及所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限是預(yù)先設(shè)定的。

      可選的,在所述接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求之前,執(zhí)行下述操作:

      根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,指定所述目標(biāo)調(diào)用所屬類別;

      設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      相應(yīng)的,本申請(qǐng)還提供一種執(zhí)行系統(tǒng)調(diào)用的裝置,包括:

      請(qǐng)求接收單元,用于接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求;

      目標(biāo)調(diào)用確定單元,用于根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定待執(zhí)行的目標(biāo)調(diào)用;

      訪問(wèn)權(quán)限判斷單元,用于判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述目標(biāo) 調(diào)用的訪問(wèn)權(quán)限;

      執(zhí)行允許單元,用于當(dāng)所述訪問(wèn)權(quán)限判斷單元的輸出為是時(shí),允許所述執(zhí)行者執(zhí)行所述目標(biāo)調(diào)用。

      可選的,所述目標(biāo)調(diào)用確定單元,具體用于當(dāng)所述系統(tǒng)調(diào)用對(duì)應(yīng)于預(yù)設(shè)的虛擬系統(tǒng)調(diào)用時(shí),將所述虛擬系統(tǒng)調(diào)用作為所述目標(biāo)調(diào)用,否則將所述系統(tǒng)調(diào)用作為所述目標(biāo)調(diào)用。

      可選的,所述訪問(wèn)權(quán)限判斷單元,包括:

      目標(biāo)調(diào)用類別獲取子單元,用于獲取所述目標(biāo)調(diào)用所屬類別;

      訪問(wèn)權(quán)限獲取子單元,用于獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;

      目標(biāo)調(diào)用判斷執(zhí)行子單元,用于根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述目標(biāo)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述裝置還包括:

      目標(biāo)調(diào)用類別指定單元,用于在所述請(qǐng)求接收單元工作之前,根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,指定所述目標(biāo)調(diào)用所屬類別;

      權(quán)限設(shè)置單元,用于設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      與現(xiàn)有技術(shù)相比,本申請(qǐng)具有以下優(yōu)點(diǎn):

      本申請(qǐng)的執(zhí)行系統(tǒng)調(diào)用的方法,接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求后,判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,并在具有時(shí)允許執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用。本申請(qǐng)?zhí)峁┑纳鲜龇椒?,在判斷某一系統(tǒng)調(diào)用能否被執(zhí)行時(shí),是以執(zhí)行者是否具有相應(yīng)的訪問(wèn)權(quán)限作為依據(jù),即,通過(guò)對(duì)執(zhí)行者的授權(quán)達(dá)到限制系統(tǒng)調(diào)用的目的,從而實(shí)現(xiàn)了基于執(zhí)行者身份的差異化控制,而且并沒(méi)有對(duì)開(kāi)放哪些系統(tǒng)調(diào)用加以限制,因此可以靈活地滿足用戶空間對(duì)系統(tǒng)調(diào)用的合理訪問(wèn)需求。

      附圖說(shuō)明

      圖1是本申請(qǐng)的一種執(zhí)行系統(tǒng)調(diào)用的方法的實(shí)施例的流程圖;

      圖2是本申請(qǐng)實(shí)施例提供的判斷執(zhí)行者是否具有對(duì)系統(tǒng)調(diào)用的訪問(wèn)權(quán)限的處理流程圖;

      圖3是本申請(qǐng)的一種執(zhí)行系統(tǒng)調(diào)用的裝置的實(shí)施例的示意圖;

      圖4是本申請(qǐng)的另一種執(zhí)行系統(tǒng)調(diào)用的方法的實(shí)施例的流程圖;

      圖5是本申請(qǐng)的另一種執(zhí)行系統(tǒng)調(diào)用的裝置的實(shí)施例的示意圖。

      具體實(shí)施方式

      在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請(qǐng)。但是,本申請(qǐng)能夠以很多不同于在此描述的其它方式來(lái)實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本申請(qǐng)內(nèi)涵的情況下做類似推廣,因此,本申請(qǐng)不受下面公開(kāi)的具體實(shí)施的限制。

      在本申請(qǐng)中,分別提供了一種執(zhí)行系統(tǒng)調(diào)用的方法及裝置,以及另一種執(zhí)行系統(tǒng)調(diào)用的方法及裝置。在下面的實(shí)施例中逐一進(jìn)行詳細(xì)說(shuō)明。

      本申請(qǐng)?zhí)峁┑膱?zhí)行系統(tǒng)調(diào)用的方法,提供了一種對(duì)執(zhí)行系統(tǒng)調(diào)用進(jìn)行權(quán)限控制的沙箱機(jī)制,其核心在于:在針對(duì)接收到的系統(tǒng)調(diào)用請(qǐng)求判斷某一系統(tǒng)調(diào)用能否被執(zhí)行時(shí),是以執(zhí)行者是否具有相應(yīng)的訪問(wèn)權(quán)限作為依據(jù),即,只有被授權(quán)的執(zhí)行者才能執(zhí)行所述系統(tǒng)調(diào)用,從而達(dá)到了對(duì)執(zhí)行系統(tǒng)調(diào)用加以限制的目的,實(shí)現(xiàn)了基于執(zhí)行者身份的差異化控制,而且并沒(méi)有對(duì)開(kāi)放哪些系統(tǒng)調(diào)用加以限制,因此可以靈活地滿足用戶空間對(duì)系統(tǒng)調(diào)用的合理訪問(wèn)需求。

      需要說(shuō)明的是,在具體應(yīng)用中,應(yīng)用程序的功能可以由進(jìn)程實(shí)現(xiàn),在支持多線程的系統(tǒng)中,應(yīng)用程序的功能也可以由多線程并發(fā)實(shí)現(xiàn),而進(jìn)程或者線程在運(yùn)行過(guò)程中可以根據(jù)需要執(zhí)行系統(tǒng)調(diào)用(syscall),即調(diào)用syscall。本實(shí)施例所述的執(zhí)行者,通常是指能夠獨(dú)立運(yùn)行的基本單元,是可以由操作系統(tǒng)調(diào)度運(yùn)行的獨(dú)立指令流,在具體實(shí)施中,可以是進(jìn)程,也可以是線程。在本文后續(xù)提供的實(shí)施例中,將以在linux系統(tǒng)中實(shí)施本技術(shù)方案為例進(jìn)行說(shuō)明,由于在linux中進(jìn)程和線程是統(tǒng)一的,并沒(méi)有線程和進(jìn)程之分,通常認(rèn)為線程是共用數(shù)據(jù)空間的輕量級(jí)進(jìn)程,因此在以下實(shí)施例的描述中,不加以明確的區(qū)分,主要采用線程的表述方式。

      本申請(qǐng)?zhí)峁┑膱?zhí)行系統(tǒng)調(diào)用的方法,在具體實(shí)施時(shí),可以在內(nèi)核的統(tǒng)一入口處實(shí)施,即由內(nèi)核中的獨(dú)立的服務(wù)提供方實(shí)施,用戶空間發(fā)起的執(zhí)行系統(tǒng)調(diào)用的請(qǐng)求可以先提交給所述服務(wù)提供方,由服務(wù)提供方判斷是否允許執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用,如果允許則可以將所述系統(tǒng)調(diào)用請(qǐng)求分發(fā)給相應(yīng)的系統(tǒng)調(diào)用 服務(wù)例程,或者直接觸發(fā)相應(yīng)的系統(tǒng)調(diào)用服務(wù)例程,從而實(shí)現(xiàn)相應(yīng)的系統(tǒng)調(diào)用功能。

      本申請(qǐng)?zhí)峁┑膱?zhí)行系統(tǒng)調(diào)用的方法,包括以下步驟:接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求;判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;若具有,則允許所述執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用。

      實(shí)施上述方法時(shí),可以預(yù)先設(shè)置執(zhí)行者對(duì)系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,即:預(yù)先進(jìn)行授權(quán),明確設(shè)定執(zhí)行者具有對(duì)哪些系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,并將這些系統(tǒng)調(diào)用的名稱或者索引號(hào)添加到所述執(zhí)行者的授權(quán)集合中;那么在接收到所述執(zhí)行者發(fā)起的系統(tǒng)調(diào)用請(qǐng)求后,可以根據(jù)預(yù)先設(shè)定的訪問(wèn)權(quán)限,判斷所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,即:判斷所述執(zhí)行者的授權(quán)集合中是否包含被請(qǐng)求的系統(tǒng)調(diào)用的名稱或者索引號(hào),若包含則說(shuō)明所述執(zhí)行者具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,允許其執(zhí)行所述系統(tǒng)調(diào)用。

      考慮到系統(tǒng)調(diào)用的數(shù)目通常比較多,而且大部分系統(tǒng)調(diào)用可以根據(jù)功能或者其他特征進(jìn)行聚類,因此為了方便授權(quán)管理,可以預(yù)先對(duì)系統(tǒng)調(diào)用進(jìn)行分類,將系統(tǒng)調(diào)用劃分為預(yù)設(shè)數(shù)目的類別,并以類別為基本單位為執(zhí)行者設(shè)置訪問(wèn)權(quán)限,從而可以減少授權(quán)過(guò)程的工作量,并提高本技術(shù)方案的執(zhí)行效率。在以下提供的實(shí)施例中將重點(diǎn)描述基于分類的優(yōu)選實(shí)施方式。下面對(duì)本申請(qǐng)的實(shí)施例進(jìn)行詳細(xì)說(shuō)明。

      請(qǐng)參考圖1,其為本申請(qǐng)的一種執(zhí)行系統(tǒng)調(diào)用的方法的實(shí)施例的流程圖。在具體實(shí)施本方法之前,可以根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,為本實(shí)施例中的待執(zhí)行系統(tǒng)調(diào)用指定所屬類別,并設(shè)置所述執(zhí)行者對(duì)各類系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      (一)根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,指定所述系統(tǒng)調(diào)用所屬類別。

      可以將內(nèi)核提供的系統(tǒng)調(diào)用預(yù)先劃分為預(yù)設(shè)數(shù)目的類別,具體實(shí)施時(shí)可以根據(jù)不同的標(biāo)準(zhǔn)進(jìn)行分類,例如,可以根據(jù)實(shí)現(xiàn)的功能劃分為:網(wǎng)絡(luò)操作相關(guān)的類別、與文件操作相關(guān)的類別、與權(quán)限設(shè)置相關(guān)的類別等。所述預(yù)設(shè)數(shù)目可以根據(jù)需要進(jìn)行設(shè)置,對(duì)于32位系統(tǒng)預(yù)設(shè)數(shù)目n可以為32,對(duì)于64位系統(tǒng)n可以為64。劃分好的類別可以分別用1~n加以標(biāo)識(shí),例如可以用1標(biāo)識(shí)與網(wǎng)絡(luò)操作相關(guān)的類別,用2標(biāo)識(shí)與文件操作相關(guān)的類別。

      進(jìn)行類別劃分后,可以為每個(gè)系統(tǒng)調(diào)用指定其所屬類別(在該過(guò)程中,自然也為本實(shí)施例中的待執(zhí)行系統(tǒng)調(diào)用指定了所屬類別),通常每個(gè)系統(tǒng)調(diào)用僅屬 于一個(gè)類別。例如:指定系統(tǒng)調(diào)用read()屬于類別2,即屬于與文件操作相關(guān)的類別。具體實(shí)施時(shí),每個(gè)系統(tǒng)調(diào)用通常有與其對(duì)應(yīng)的索引號(hào),因此在為每個(gè)系統(tǒng)調(diào)用指定所屬類別后,可以將系統(tǒng)調(diào)用的名稱或者索引號(hào)與其所屬類別的標(biāo)識(shí)對(duì)應(yīng)存儲(chǔ)。

      優(yōu)選地,為了便于提高進(jìn)行權(quán)限檢查的執(zhí)行效率,本實(shí)施例提供采用二進(jìn)制比特串描述系統(tǒng)調(diào)用所屬類別的優(yōu)選實(shí)施方式。用于描述系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串的長(zhǎng)度與系統(tǒng)調(diào)用的類別數(shù)n一致,每個(gè)比特位分別與相同序號(hào)的系統(tǒng)調(diào)用類別相對(duì)應(yīng),即:第1個(gè)比特位與類別1相對(duì)應(yīng),第2個(gè)比特位與類別2相對(duì)應(yīng),......,第n個(gè)比特位與類別n相對(duì)應(yīng),每個(gè)比特位的取值則代表系統(tǒng)調(diào)用與相應(yīng)類別的關(guān)系:1表示屬于該類別,0表示不屬于。例如:描述某系統(tǒng)調(diào)用所屬類別的32位二進(jìn)制比特串為:0100000......0,則代表該系統(tǒng)調(diào)用屬于類別2。

      進(jìn)一步地,可以對(duì)可供用戶空間訪問(wèn)的每個(gè)系統(tǒng)調(diào)用都采用上述方式進(jìn)行描述,如果總共有s個(gè)系統(tǒng)調(diào)用(索引號(hào)的取值范圍為:0~s-1),則對(duì)應(yīng)于s個(gè)二進(jìn)制比特串。在具體實(shí)施時(shí),可以將描述這些系統(tǒng)調(diào)用所屬分類的s個(gè)二進(jìn)制比特串統(tǒng)一采用二維bit數(shù)組進(jìn)行存儲(chǔ)管理,記為category[n][s],其中category[0][m]~category[n-1][m]存儲(chǔ)的長(zhǎng)度為n的二進(jìn)制比特串,即對(duì)應(yīng)于索引號(hào)為m的系統(tǒng)調(diào)用的所屬類別。

      在具體實(shí)施時(shí),可以預(yù)先設(shè)定category[n][s],也可以在此基礎(chǔ)上在系統(tǒng)配置文件中提供配置信息,在系統(tǒng)啟動(dòng)時(shí),通過(guò)讀取配置文件中的配置信息進(jìn)行相應(yīng)的調(diào)整,例如:配置信息的形式可以為“syscall.classifytypename”,其中syscall.classify為關(guān)鍵字,name為syscall名稱,type代表所屬類別標(biāo)識(shí)(1~n),在系統(tǒng)啟動(dòng)時(shí)可以將讀取的配置信息轉(zhuǎn)化成對(duì)應(yīng)的二進(jìn)制比特串、并更新category[n][s]中的相應(yīng)比特位的值。采用這種方式,可以基于策略規(guī)則對(duì)系統(tǒng)調(diào)用所屬分類進(jìn)行調(diào)整,具有靈活性。

      (二)設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      本實(shí)施例提供基于分類的優(yōu)選實(shí)施方式,采用這種優(yōu)選實(shí)施方式,可以以類別為單位在內(nèi)核中對(duì)執(zhí)行者授權(quán),在執(zhí)行者生命周期的至少一個(gè)階段設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,所述生命周期包括以下階段:創(chuàng)建階段、創(chuàng)建之后運(yùn)行之前階段、運(yùn)行階段等,即:可以在不同階段按照預(yù)設(shè)方式 調(diào)整執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,從而實(shí)現(xiàn)對(duì)執(zhí)行者訪問(wèn)權(quán)限的動(dòng)態(tài)調(diào)節(jié),能夠?yàn)閳?zhí)行系統(tǒng)調(diào)用提供更為靈活的安全保障。

      在本實(shí)施例中所述執(zhí)行者是指線程,即:為線程設(shè)置對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限??傮w說(shuō),在運(yùn)行線程之前的權(quán)限設(shè)置過(guò)程是一個(gè)逐步降低權(quán)限的過(guò)程,以將線程對(duì)系統(tǒng)調(diào)用的訪問(wèn)權(quán)限限制在安全范圍中,在線程的運(yùn)行過(guò)程中,則可以根據(jù)運(yùn)行代碼的可信程度,自行提高、降低或者恢復(fù)訪問(wèn)權(quán)限。

      作為一種優(yōu)選實(shí)施方式,為了避免線程過(guò)度提升自身權(quán)限,本實(shí)施例還引入了訪問(wèn)能力的概念、并通過(guò)在線程運(yùn)行之前設(shè)置其訪問(wèn)能力來(lái)實(shí)現(xiàn)對(duì)其調(diào)節(jié)訪問(wèn)權(quán)限的限制。所述訪問(wèn)能力,表示線程擁有的訪問(wèn)系統(tǒng)調(diào)用的能力范圍。

      具體實(shí)施時(shí),線程對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限(以下簡(jiǎn)稱訪問(wèn)權(quán)限),以及對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)能力(以下簡(jiǎn)稱訪問(wèn)能力),可以分別用集合來(lái)描述,訪問(wèn)權(quán)限集合中包含線程具有訪問(wèn)權(quán)限的類別標(biāo)識(shí),取值范圍1~n,訪問(wèn)能力集合中包含線程具有訪問(wèn)能力的類別標(biāo)識(shí),取值范圍1~n。對(duì)于一個(gè)線程來(lái)說(shuō),訪問(wèn)權(quán)限集合是訪問(wèn)能力集合的子集。

      例如:某線程具有對(duì)系統(tǒng)調(diào)用類別1、2、3的訪問(wèn)能力,那么該線程的訪問(wèn)能力集合為{1、2、3},該線程的訪問(wèn)權(quán)限集合是{1、2、3}的子集,即可以為以下所列集合之一:{1、2、3},{1、2},{1、3},{2、3},{1},{2},{3}。

      優(yōu)選地,與采用二進(jìn)制比特串描述系統(tǒng)調(diào)用所屬類別的優(yōu)選實(shí)施方式相對(duì)應(yīng),線程的訪問(wèn)權(quán)限、以及訪問(wèn)能力也可以采用二進(jìn)制比特串進(jìn)行描述。所述二進(jìn)制比特串的長(zhǎng)度與系統(tǒng)調(diào)用的類別數(shù)一致,每個(gè)比特位分別與相同序號(hào)的系統(tǒng)調(diào)用類別相對(duì)應(yīng),即:第1個(gè)比特位與類別1相對(duì)應(yīng),第2個(gè)比特位與類別2相對(duì)應(yīng),......,第n個(gè)比特位與類別n相對(duì)應(yīng),每個(gè)比特位的取值則代表線程是否具有對(duì)相應(yīng)類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限:1,表示線程具有對(duì)相應(yīng)類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,0表示不具有。為了便于描述,本實(shí)施例將描述線程對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限的二進(jìn)制比特串簡(jiǎn)稱為訪問(wèn)權(quán)限比特串,將描述線程對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)能力的二進(jìn)制比特串簡(jiǎn)稱為訪問(wèn)能力比特串。

      在具體實(shí)施時(shí),所述線程的訪問(wèn)權(quán)限,通常與線程的身份標(biāo)識(shí)信息對(duì)應(yīng)存儲(chǔ),其中所述身份標(biāo)識(shí)信息可以是線程的信任狀信息(credential),也可以是其他可以標(biāo)識(shí)線程身份的信息。首次設(shè)置時(shí)可以將線程的訪問(wèn)權(quán)限與身份標(biāo)識(shí)信息對(duì)應(yīng)存儲(chǔ),后續(xù)設(shè)置時(shí)可以先根據(jù)線程的身份標(biāo)識(shí)信息獲取與其對(duì)應(yīng)存儲(chǔ)的 訪問(wèn)權(quán)限,然后對(duì)訪問(wèn)權(quán)限進(jìn)行更新,再將更新后的訪問(wèn)權(quán)限與身份標(biāo)識(shí)信息對(duì)應(yīng)存儲(chǔ)。同理,設(shè)置線程的訪問(wèn)能力,也可以采用將訪問(wèn)能力與線程的身份標(biāo)識(shí)信息對(duì)應(yīng)存儲(chǔ)的方式。

      下面以在32位linux系統(tǒng)中為線程設(shè)置訪問(wèn)權(quán)限為例,從線程的創(chuàng)建、線程創(chuàng)建之后運(yùn)行之前、以及線程運(yùn)行過(guò)程中這三個(gè)階段,對(duì)其訪問(wèn)權(quán)限的設(shè)置作進(jìn)一步詳細(xì)說(shuō)明,其中,在前兩個(gè)階段,也可以對(duì)線程的訪問(wèn)能力進(jìn)行設(shè)置。

      1)創(chuàng)建線程時(shí),線程可以繼承創(chuàng)建者的訪問(wèn)權(quán)限。

      在創(chuàng)建線程時(shí),可以用創(chuàng)建者的訪問(wèn)權(quán)限設(shè)置所述執(zhí)行者的相應(yīng)訪問(wèn)權(quán)限。

      在linux系統(tǒng)的init進(jìn)程啟動(dòng)時(shí),其訪問(wèn)權(quán)限(permissoin)比特串和訪問(wèn)能力(capability)比特串都初始化為0xffffffff,即所有bit位都是1,從而擁有對(duì)所有類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限和訪問(wèn)能力;隨后,init進(jìn)程運(yùn)行負(fù)責(zé)創(chuàng)建應(yīng)用進(jìn)程的特定進(jìn)程,例如:seed進(jìn)程;seed進(jìn)程初始化完畢后,降低其訪問(wèn)權(quán)限和訪問(wèn)能力,例如:刪除對(duì)部分預(yù)設(shè)系統(tǒng)調(diào)用類別的訪問(wèn)權(quán)限和訪問(wèn)能力,以達(dá)到seed進(jìn)程的最小權(quán)限。具體實(shí)施時(shí),可以將seed進(jìn)程的訪問(wèn)權(quán)限比特串和訪問(wèn)能力比特串中的相應(yīng)比特位清除為0,然后用更新后的比特串設(shè)置seed進(jìn)程的訪問(wèn)權(quán)限和訪問(wèn)能力。

      seed進(jìn)程接收啟動(dòng)應(yīng)用程序a的請(qǐng)求后,在內(nèi)核中完成應(yīng)用程序a的主線程threada的實(shí)體創(chuàng)建,并根據(jù)seed的訪問(wèn)權(quán)限設(shè)置threada的訪問(wèn)權(quán)限和訪問(wèn)能力,即:threada可以繼承創(chuàng)建者的訪問(wèn)權(quán)限和訪問(wèn)能力,設(shè)置threada的訪問(wèn)權(quán)限比特串=threada的訪問(wèn)能力比特串=seed的訪問(wèn)權(quán)限比特串,那么threada就擁有了從seed繼承的訪問(wèn)權(quán)限和訪問(wèn)能力。

      此處給出了線程繼承創(chuàng)建者的訪問(wèn)權(quán)限的實(shí)施方式,在具體實(shí)施中,也可以按照預(yù)設(shè)授權(quán)方案設(shè)置所述線程對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限和訪問(wèn)能力,即:將線程的訪問(wèn)權(quán)限和訪問(wèn)能力設(shè)置為預(yù)設(shè)授權(quán)方案中指定的值。

      2)創(chuàng)建線程之后、運(yùn)行線程之前,降低線程的訪問(wèn)權(quán)限。

      由于threada即將運(yùn)行的應(yīng)用代碼,通常是不可信的,為了避免惡意執(zhí)行系統(tǒng)調(diào)用帶來(lái)的安全性問(wèn)題,在創(chuàng)建threada的實(shí)體后,在運(yùn)行該線程之前,即:運(yùn)行應(yīng)用a的代碼之前,還可以按照預(yù)設(shè)方式進(jìn)一步執(zhí)行降權(quán)操作,以將threada對(duì)系統(tǒng)調(diào)用的訪問(wèn)權(quán)限和訪問(wèn)能力限制在安全范圍中。所述進(jìn)一步執(zhí)行降權(quán)操作,包括:根據(jù)系統(tǒng)配置文件降權(quán),和/或根據(jù)應(yīng)用的配置文件降權(quán),下面分別 進(jìn)行說(shuō)明。

      a)根據(jù)所述執(zhí)行者的身份類別以及系統(tǒng)配置文件中針對(duì)所述身份類別的權(quán)限配置信息,降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      系統(tǒng)配置文件中可以顯示地設(shè)定針對(duì)各種身份類別的權(quán)限配置信息,例如,其配置格式可以為:setcapusercapability,其中user即對(duì)應(yīng)于各種身份類別,如:普通應(yīng)用、系統(tǒng)應(yīng)用、特殊應(yīng)用等,capability是對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)范圍。在創(chuàng)建threada的實(shí)體后,可以根據(jù)應(yīng)用a的預(yù)設(shè)特征,例如:簽名信息或者應(yīng)用名稱、路徑等信息,按照預(yù)設(shè)的身份轉(zhuǎn)換規(guī)則,生成表征threada的身份類別信息,然后根據(jù)系統(tǒng)配置文件中針對(duì)所述身份類別的權(quán)限配置信息執(zhí)行降權(quán)操作。

      例如,threada被創(chuàng)建后,具有與uid/gid設(shè)置相關(guān)的系統(tǒng)調(diào)用類別的訪問(wèn)權(quán)限和訪問(wèn)能力,但是系統(tǒng)配置文件中顯示指定的capability中不包含該類別,則可以將threada的訪問(wèn)權(quán)限比特串和訪問(wèn)能力比特串中,與該類別對(duì)應(yīng)的比特位清除為0,然后用更新后的比特串設(shè)置threada的訪問(wèn)權(quán)限和訪問(wèn)能力。

      b)根據(jù)所述執(zhí)行者所屬應(yīng)用的配置文件中的權(quán)限申明信息,降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      通常應(yīng)用程序a可以在其配置文件中申明其需要的功能權(quán)限,例如:需要收發(fā)短信的功能權(quán)限,需要訪問(wèn)通訊錄的功能權(quán)限等,因此運(yùn)行threada之前,可以根據(jù)應(yīng)用程序申明的功能權(quán)限,選擇實(shí)現(xiàn)相應(yīng)功能的系統(tǒng)調(diào)用,并確定這些系統(tǒng)調(diào)用對(duì)應(yīng)的系統(tǒng)調(diào)用類別,即:確定應(yīng)用程序a申明的功能權(quán)限所涉及的系統(tǒng)調(diào)用類別,然后執(zhí)行相應(yīng)的降權(quán)操作,從threada的訪問(wèn)權(quán)限比特串和訪問(wèn)能力比特串中,將未涉及的系統(tǒng)調(diào)用類別對(duì)應(yīng)的比特位清除為0,然后用更新后的比特串設(shè)置threada的訪問(wèn)權(quán)限和訪問(wèn)能力。

      需要說(shuō)明的是,threada作為應(yīng)用程序a的主線程,當(dāng)其脫離seed后,還可以根據(jù)其功能需求創(chuàng)建其他功能子線程,一方面其創(chuàng)建的子線程可以繼承threada的訪問(wèn)權(quán)限和訪問(wèn)能力,另一方面在運(yùn)行子線程之前,還可以降低子線程的訪問(wèn)權(quán)限和訪問(wèn)能力,例如:刪除與創(chuàng)建線程相關(guān)的系統(tǒng)調(diào)用類別的訪問(wèn)權(quán)限和訪問(wèn)能力。具體實(shí)現(xiàn)時(shí),可以將所述子線程的訪問(wèn)權(quán)限比特串和訪問(wèn)能力比特串中的相應(yīng)比特位清除為0、然后用更新后的比特串設(shè)置子線程的訪問(wèn)權(quán)限和訪問(wèn)能力。

      3)線程運(yùn)行過(guò)程中,自行調(diào)節(jié)訪問(wèn)權(quán)限。

      此處所述線程包括應(yīng)用程序a的主線程threada,也包括threada創(chuàng)建的子線程,這些線程在運(yùn)行過(guò)程中,都可以根據(jù)需要自行調(diào)節(jié)各自的訪問(wèn)權(quán)限,下面以threada為例,進(jìn)行說(shuō)明。

      threada創(chuàng)建完畢后開(kāi)始運(yùn)行相應(yīng)的應(yīng)用代碼,在運(yùn)行過(guò)程中,可能需要加載運(yùn)行不可信代碼,例如:第三方提供的代碼,或者調(diào)用第三方提供的庫(kù)中的接口等,這些代碼的安全性通常未得到有效驗(yàn)證,因此在加載運(yùn)行不可信代碼之前,threada可以自行降低訪問(wèn)權(quán)限,但是要保留訪問(wèn)能力,即:將訪問(wèn)權(quán)限比特串中禁止不可信代碼執(zhí)行的系統(tǒng)調(diào)用類別對(duì)應(yīng)的比特位清除為0,并且不修改訪問(wèn)能力比特串,然后用更新后的訪問(wèn)權(quán)限比特串設(shè)置threada的訪問(wèn)權(quán)限。

      在所述不可信代碼運(yùn)行完畢后,threada可以恢復(fù)其對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。threada可以將其訪問(wèn)權(quán)限恢復(fù)為在加載上述不可信代碼之前的訪問(wèn)權(quán)限,如果之前降低訪問(wèn)權(quán)限時(shí),未記錄降權(quán)前的訪問(wèn)權(quán)限,那么可以在不可信代碼運(yùn)行完畢后,以threada的訪問(wèn)能力為上限,對(duì)其訪問(wèn)權(quán)限進(jìn)行恢復(fù),但是不能超出訪問(wèn)能力的限制。

      此外,threada在運(yùn)行過(guò)程中,在加載運(yùn)行可信代碼之前,可以自行提高訪問(wèn)權(quán)限。例如:為了確保可信代碼實(shí)現(xiàn)其功能,可以根據(jù)可信代碼的需求,提高threada的訪問(wèn)權(quán)限,即可以增加其具有訪問(wèn)權(quán)限的系統(tǒng)調(diào)用類別,以保證可信代碼實(shí)現(xiàn)其功能。但是threada在提高其訪問(wèn)權(quán)限時(shí),也需要以其訪問(wèn)能力為上限,在訪問(wèn)能力的限制之內(nèi)進(jìn)行權(quán)限提升。

      在具體實(shí)施時(shí),可以為線程提供一個(gè)setcap()權(quán)限設(shè)置接口,當(dāng)需要設(shè)置線程的訪問(wèn)權(quán)限時(shí),可以將待設(shè)置的訪問(wèn)權(quán)限信息(例如:訪問(wèn)權(quán)限比特串)作為入口參數(shù)并調(diào)用setcap()接口,由該接口函數(shù)在內(nèi)核中實(shí)現(xiàn)所述設(shè)置功能。如果需要設(shè)置訪問(wèn)能力,則可以將訪問(wèn)能力信息(例如:訪問(wèn)能力比特串)也作為入口參數(shù)傳入,由setcap()函數(shù)在內(nèi)核中實(shí)現(xiàn)相應(yīng)的設(shè)置功能。

      需要說(shuō)明的是,上述給出的在各階段設(shè)置線程訪問(wèn)權(quán)限的方式,在具體實(shí)施時(shí),可以不全部采用,而是根據(jù)需要進(jìn)行相應(yīng)的選擇和組合,例如:可以僅在創(chuàng)建時(shí)設(shè)置線程的訪問(wèn)權(quán)限,或者在創(chuàng)建時(shí)設(shè)置權(quán)限、并在線程運(yùn)行過(guò)程中進(jìn)行權(quán)限調(diào)節(jié)等,都是可以的。

      在創(chuàng)建線程及線程運(yùn)行等各個(gè)階段,可以通過(guò)以上描述的時(shí)機(jī)和方式設(shè)置 線程的訪問(wèn)權(quán)限(和訪問(wèn)能力),同時(shí),在線程的運(yùn)行過(guò)程中可能會(huì)執(zhí)行系統(tǒng)調(diào)用,此時(shí),可以執(zhí)行本實(shí)施例的步驟101-步驟104,根據(jù)線程的訪問(wèn)權(quán)限判斷其是否可以執(zhí)行所述系統(tǒng)調(diào)用,從而實(shí)現(xiàn)對(duì)系統(tǒng)調(diào)用的訪問(wèn)限制。下面對(duì)各個(gè)步驟逐一進(jìn)行說(shuō)明。

      步驟101、接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求。

      線程執(zhí)行某一系統(tǒng)調(diào)用后,通常會(huì)陷入內(nèi)核,此時(shí)位于內(nèi)核入口處的、實(shí)施了本方法的處理程序就會(huì)接收到執(zhí)行所述系統(tǒng)調(diào)用的請(qǐng)求,所述請(qǐng)求中通常攜帶待執(zhí)行系統(tǒng)調(diào)用的索引號(hào)或者名稱,以及執(zhí)行系統(tǒng)調(diào)用的相關(guān)參數(shù)。

      步驟102、判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,若具有,則執(zhí)行步驟103,否則,執(zhí)行步驟104。

      在具體實(shí)施時(shí),可以包括步驟102-1至102-3,下面結(jié)合圖2作進(jìn)一步說(shuō)明。

      步驟102-1、獲取所述系統(tǒng)調(diào)用所屬類別。

      根據(jù)前面的描述,已經(jīng)預(yù)先為每個(gè)系統(tǒng)調(diào)用指定其所屬的系統(tǒng)調(diào)用類別,其中自然也包括步驟101接收到的待執(zhí)行的系統(tǒng)調(diào)用,此時(shí)可以根據(jù)待執(zhí)行的系統(tǒng)調(diào)用的名稱或者索引號(hào),獲取其所屬的系統(tǒng)調(diào)用類別,例如:獲取其所屬的系統(tǒng)調(diào)用類別的標(biāo)識(shí)。

      如果在預(yù)先指定系統(tǒng)調(diào)用類別時(shí),采取了用二進(jìn)制比特串描述的優(yōu)選實(shí)施方式,并且利用二維bit數(shù)組category[n][s]存儲(chǔ)、管理系統(tǒng)調(diào)用所屬分類,那么本步驟可以通過(guò)待執(zhí)行系統(tǒng)調(diào)用的索引號(hào)scno查詢數(shù)組category[n][s],從而獲取待執(zhí)行系統(tǒng)調(diào)用所屬的類別信息category[n][scno],將這n個(gè)比特組合就得到了該系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串,簡(jiǎn)稱類別比特串。如果步驟101接收到的請(qǐng)求中攜帶的是系統(tǒng)調(diào)用名稱,則可以先通過(guò)查表等操作將名稱轉(zhuǎn)換為索引號(hào)。

      步驟102-2、獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      本實(shí)施例中,執(zhí)行者為線程,因此本步驟可以獲取已為所述線程設(shè)置的訪問(wèn)權(quán)限,通常可以根據(jù)線程的身份標(biāo)識(shí)信息獲取其訪問(wèn)權(quán)限。例如:可以通過(guò)內(nèi)核的線程上下文得到線程的信任狀信息(credential),并根據(jù)信任狀獲取其訪問(wèn)權(quán)限,例如:訪問(wèn)權(quán)限集合。

      對(duì)于采用二進(jìn)制比特串描述的優(yōu)選實(shí)施方式,本步驟獲取的是所述線程的訪問(wèn)權(quán)限比特串。

      步驟102-3、根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限,若具有,則執(zhí)行步驟103,否則,執(zhí)行步驟104。

      本步驟根據(jù)步驟102-1獲取的待執(zhí)行系統(tǒng)調(diào)用所屬類別,以及步驟102-2獲取的線程的訪問(wèn)權(quán)限,判斷所述線程是否能夠執(zhí)行所述系統(tǒng)調(diào)用。

      如果步驟102-1獲取的是所述系統(tǒng)調(diào)用所屬的系統(tǒng)調(diào)用類別的標(biāo)識(shí)、步驟102-2獲取的是訪問(wèn)權(quán)限集合,即該集合中包含線程具有訪問(wèn)權(quán)限的類別標(biāo)識(shí),那么本步驟可以判斷該集合中是否包含步驟102-1獲取的類別標(biāo)識(shí),若包含則說(shuō)明所述線程具有相應(yīng)的訪問(wèn)權(quán)限。

      優(yōu)選地,如果線程的訪問(wèn)權(quán)限、以及系統(tǒng)調(diào)用所屬類別都是采用二進(jìn)制比特串描述的,那么本步驟可以采用按位與的優(yōu)選實(shí)施方式:將訪問(wèn)權(quán)限比特串permission和類別比特串category[n][scno]進(jìn)行按位與操作,即permission&category[n][scno],在n=32時(shí),即為一次整數(shù)位與操作,如果結(jié)果不全為0,則說(shuō)明所述線程具有對(duì)待執(zhí)行系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限,可以執(zhí)行步驟103,否則說(shuō)明所述線程不具有相應(yīng)的訪問(wèn)權(quán)限,可以向所述線程返回代表“調(diào)用失敗”或者“無(wú)調(diào)用權(quán)限”等類似的應(yīng)答結(jié)果。采用基于比特位的按位與操作方式進(jìn)行權(quán)限檢查,可以快速地得到檢查結(jié)果,具有較高的執(zhí)行效率。

      需要說(shuō)明的是,上面給出的優(yōu)選實(shí)施方式中,訪問(wèn)權(quán)限比特串中的1,表示線程具有對(duì)相應(yīng)類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,0表示不具有,類別比特串中的1,表示系統(tǒng)調(diào)用屬于相應(yīng)類別,0表示不屬于,因此在本步驟中采用按位與操作進(jìn)行判斷。在其他實(shí)施方式中,所述訪問(wèn)權(quán)限比特串與所述類別比特串中的比特位的值也可以采用不同的方式設(shè)置,只要表示具有對(duì)相應(yīng)類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限的值、與表示系統(tǒng)調(diào)用屬于相應(yīng)類別的值一致即可,并且在本步驟中采用相應(yīng)的運(yùn)算及判斷方式也同樣可以實(shí)現(xiàn)本技術(shù)方案,同樣可以取得較高的執(zhí)行效率。

      例如:對(duì)于權(quán)限比特串,可以用0表示線程具有對(duì)相應(yīng)類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,用1表示不具有;相應(yīng)的,對(duì)于類別比特串,可以用0表示系統(tǒng)調(diào)用屬于相應(yīng)類別,1表示不屬于。本步驟將訪問(wèn)權(quán)限比特串permission和類別比特串category[n][scno]執(zhí)行按位或操作,并當(dāng)執(zhí)行結(jié)果不全為1時(shí),判定所述執(zhí)行者具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      步驟103、允許所述執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用。

      執(zhí)行到本步驟,說(shuō)明所述線程具有對(duì)待執(zhí)行系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,因此可以允許線程執(zhí)行所述系統(tǒng)調(diào)用。在具體實(shí)施時(shí),可以將訪問(wèn)請(qǐng)求分發(fā)給與所述系統(tǒng)調(diào)用對(duì)應(yīng)的處理程序(也稱系統(tǒng)調(diào)用服務(wù)例程),也可以直接觸發(fā)相應(yīng)的系統(tǒng)調(diào)用服務(wù)例程,從而實(shí)現(xiàn)相應(yīng)的系統(tǒng)調(diào)用功能。

      步驟104、拒絕所述執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用。

      執(zhí)行到本步驟,說(shuō)明所述線程不具有對(duì)待執(zhí)行系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,因此拒絕執(zhí)行所述系統(tǒng)調(diào)用。在具體實(shí)施時(shí),可以向所述線程返回“系統(tǒng)調(diào)用失敗”、或者“沒(méi)有調(diào)用權(quán)限”等類似的應(yīng)答。

      至此,通過(guò)步驟101-步驟104,對(duì)本實(shí)施例提供的執(zhí)行系統(tǒng)調(diào)用的方法的實(shí)施方式作了詳細(xì)描述。

      需要說(shuō)明的是,本實(shí)施例提供的方法雖然是針對(duì)系統(tǒng)調(diào)用提出的,但是并不僅僅適用于系統(tǒng)調(diào)用,也可以用于自定義的、需要陷入內(nèi)核實(shí)現(xiàn)的接口函數(shù),為了與前者相區(qū)分,可以將前者稱為原生系統(tǒng)調(diào)用,而將自定義的接口函數(shù)稱為虛擬系統(tǒng)調(diào)用。在需要執(zhí)行虛擬系統(tǒng)調(diào)用時(shí),可以用預(yù)先設(shè)定的數(shù)值作為入口參數(shù)值、然后調(diào)用某預(yù)設(shè)的原生系統(tǒng)調(diào)用,例如以本實(shí)施例中提及的setcap()作為預(yù)設(shè)的虛擬系統(tǒng)調(diào)用為例,可以預(yù)先設(shè)定如果采用預(yù)設(shè)數(shù)值100作為入口參數(shù)param1的值、并調(diào)用某原生系統(tǒng)調(diào)用syscalla,則其對(duì)應(yīng)的是預(yù)設(shè)虛擬系統(tǒng)調(diào)用setcap(),即陷入內(nèi)核后真正執(zhí)行的是setcap()調(diào)用。在這種情況下,同樣也可以針對(duì)setcap()調(diào)用進(jìn)行權(quán)限檢查,以對(duì)線程修改自身權(quán)限加以限制。下面對(duì)具體實(shí)施方式作進(jìn)一步說(shuō)明。

      在步驟101接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求之后,可以先根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定其是否對(duì)應(yīng)于預(yù)設(shè)的虛擬系統(tǒng)調(diào)用,若是,則判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述虛擬系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,并在具有時(shí)允許所述執(zhí)行者執(zhí)行所述虛擬系統(tǒng)調(diào)用;若否,則按照上述實(shí)施例中的步驟102進(jìn)行處理。其中,所述系統(tǒng)調(diào)用的相關(guān)信息包括:系統(tǒng)調(diào)用名稱及參數(shù)值,仍采用之前給出的例子,如果系統(tǒng)調(diào)用名稱為syscalla,參數(shù)值為100,則可以確定其對(duì)應(yīng)于預(yù)設(shè)的虛擬系統(tǒng)調(diào)用setcap()。

      如果采用基于分類的優(yōu)選實(shí)施方式,在執(zhí)行步驟101之前,可以根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別、指定每個(gè)系統(tǒng)調(diào)用所屬類別,同時(shí)也可以指定虛擬系統(tǒng)調(diào)用所屬類別,并同樣設(shè)置執(zhí)行者,即本實(shí)施例中的線程,對(duì)各類別系統(tǒng)調(diào)用 的訪問(wèn)權(quán)限。

      以虛擬系統(tǒng)調(diào)用setcap()為例,可以先為虛擬系統(tǒng)調(diào)用setcap()指定對(duì)應(yīng)的系統(tǒng)調(diào)用索引號(hào)s1(不能和其他syscall的索引號(hào)沖突),然后將category[n][s]表擴(kuò)展為category[n][s1],其中s1>=s1,并通過(guò)系統(tǒng)配置文件中的配置信息指定虛擬系統(tǒng)調(diào)用setcap()所屬類別,例如:“syscall.classifytypesetcap”,其中type代表類別標(biāo)識(shí)(1~n)。那么category[0][s1]~category[n-1][s1]存儲(chǔ)的長(zhǎng)度為n的二進(jìn)制比特串,即為虛擬系統(tǒng)調(diào)用setcap()的類別比特串。

      線程在運(yùn)行過(guò)程中,可以根據(jù)需要執(zhí)行系統(tǒng)調(diào)用,在內(nèi)核的統(tǒng)一入口處,如果根據(jù)待執(zhí)行系統(tǒng)調(diào)用的相關(guān)信息確定其對(duì)應(yīng)為預(yù)設(shè)的虛擬系統(tǒng)調(diào)用setcap(),那么在判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述虛擬系統(tǒng)調(diào)用的訪問(wèn)權(quán)限時(shí),可以采用基于比特位的按位與操作方式,即將setcap()的類別比特串與所述執(zhí)行者的訪問(wèn)權(quán)限比特串執(zhí)行按位與操作,如果結(jié)果不全為零,則說(shuō)明所述執(zhí)行者具有對(duì)setcap()所屬類別的訪問(wèn)權(quán)限,因此可以執(zhí)行setcap(),否則不能執(zhí)行。

      采用上述支持虛擬系統(tǒng)調(diào)用的實(shí)施方式,可以擴(kuò)展本實(shí)施例提供的沙箱機(jī)制的應(yīng)用場(chǎng)景。對(duì)于需要陷入內(nèi)核執(zhí)行的非系統(tǒng)調(diào)用,通過(guò)將其虛擬為系統(tǒng)調(diào)用,可以簡(jiǎn)化代碼編寫(xiě)的工作量,而且同樣可以在內(nèi)核入口處檢查執(zhí)行者是否具有對(duì)虛擬系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,從而可以在對(duì)系統(tǒng)調(diào)用提供訪問(wèn)控制的基礎(chǔ)上,對(duì)虛擬系統(tǒng)調(diào)用也提供訪問(wèn)控制機(jī)制,進(jìn)一步保障系統(tǒng)的安全性。

      綜上所述,本實(shí)施例提供的執(zhí)行系統(tǒng)調(diào)用的方法,在判斷某一系統(tǒng)調(diào)用能否被執(zhí)行時(shí),是以執(zhí)行者是否具有相應(yīng)的訪問(wèn)權(quán)限作為依據(jù),即,通過(guò)對(duì)執(zhí)行者的授權(quán)達(dá)到限制系統(tǒng)調(diào)用的目的,從而實(shí)現(xiàn)了基于執(zhí)行者身份的差異化控制,而且并沒(méi)有對(duì)開(kāi)放哪些系統(tǒng)調(diào)用加以限制,因此可以靈活地滿足用戶空間對(duì)系統(tǒng)調(diào)用的合理訪問(wèn)需求。

      在上述的實(shí)施例中,提供了一種執(zhí)行系統(tǒng)調(diào)用的方法,與之相對(duì)應(yīng)的,本申請(qǐng)還提供一種執(zhí)行系統(tǒng)調(diào)用的裝置。請(qǐng)參看圖3,其為本申請(qǐng)的一種執(zhí)行系統(tǒng)調(diào)用的裝置實(shí)施例的示意圖。由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。下述描述的裝置實(shí)施例僅僅是示意性的。

      本實(shí)施例的一種執(zhí)行系統(tǒng)調(diào)用的裝置,包括:請(qǐng)求接收單元301,用于接收 執(zhí)行系統(tǒng)調(diào)用的請(qǐng)求;權(quán)限判斷單元302,用于判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;執(zhí)行允許單元303,用于當(dāng)所述訪問(wèn)權(quán)限判斷單元的輸出為是時(shí),允許所述執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用;執(zhí)行拒絕單元304,用于當(dāng)所述訪問(wèn)權(quán)限判斷單元的輸出為否時(shí),拒絕所述執(zhí)行者執(zhí)行所述系統(tǒng)調(diào)用。

      可選的,所述權(quán)限判斷單元,包括:

      類別獲取子單元,用于獲取所述系統(tǒng)調(diào)用所屬類別;

      訪問(wèn)權(quán)限獲取子單元,用于獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;

      判斷執(zhí)行子單元,用于根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述裝置還包括:

      類別指定單元,用于在所述請(qǐng)求接收單元工作之前,根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,指定所述系統(tǒng)調(diào)用所屬類別;

      權(quán)限設(shè)置單元,用于設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述判斷執(zhí)行子單元,具體用于將描述所述訪問(wèn)權(quán)限的二進(jìn)制比特串與描述所述系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串,逐位進(jìn)行位運(yùn)算,并根據(jù)運(yùn)算結(jié)果判定所述執(zhí)行者是否具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述判斷執(zhí)行子單元,具體用于將描述所述訪問(wèn)權(quán)限的二進(jìn)制比特串與描述所述系統(tǒng)調(diào)用所屬類別的二進(jìn)制比特串,逐位執(zhí)行按位與操作,并當(dāng)執(zhí)行結(jié)果不全為0時(shí)判定所述執(zhí)行者具有對(duì)所述系統(tǒng)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元,具體用于將所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限與其身份標(biāo)識(shí)信息對(duì)應(yīng)存儲(chǔ);

      所述訪問(wèn)權(quán)限獲取子單元,具體用于根據(jù)所述執(zhí)行者的身份標(biāo)識(shí)信息獲取所述執(zhí)行者的所述訪問(wèn)權(quán)限。

      可選的,所述訪問(wèn)權(quán)限獲取子單元,具體用于從所述執(zhí)行者的運(yùn)行上下文信息中獲取其身份標(biāo)識(shí)信息,并根據(jù)所述身份標(biāo)識(shí)信息獲取所述執(zhí)行者的所述訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元包括:

      權(quán)限繼承子單元,用于在創(chuàng)建所述執(zhí)行者時(shí),按照預(yù)設(shè)授權(quán)方案設(shè)置所述 執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;或者,用創(chuàng)建者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限設(shè)置所述執(zhí)行者的相應(yīng)訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元還包括:

      運(yùn)行前權(quán)限降低子單元,用于在創(chuàng)建所述執(zhí)行者之后、在運(yùn)行所述執(zhí)行者之前,按照預(yù)設(shè)方式降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述運(yùn)行前權(quán)限降低子單元包括:

      第一降低子單元,用于根據(jù)所述執(zhí)行者的身份類別以及系統(tǒng)配置文件中針對(duì)所述身份類別的權(quán)限配置信息,降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;和/或,

      第二降低子單元,用于根據(jù)所述執(zhí)行者所屬應(yīng)用程序的配置文件中的權(quán)限申明信息,降低所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元還包括:

      運(yùn)行后權(quán)限降低子單元,用于所述執(zhí)行者在運(yùn)行過(guò)程中,在加載運(yùn)行不可信代碼之前降低其對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元還包括:

      權(quán)限恢復(fù)單元,用于在所述不可信代碼運(yùn)行完畢后,恢復(fù)所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限設(shè)置單元還包括:

      權(quán)限提高子單元,用于所述執(zhí)行者在運(yùn)行過(guò)程中,在加載運(yùn)行可信代碼之前提高其對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      可選的,所述權(quán)限降低子單元和所述運(yùn)行前權(quán)限降低子單元,還分別用于相應(yīng)設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)能力;

      所述權(quán)限提高子單元,具體用于在所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)能力之內(nèi),提高所述執(zhí)行者的訪問(wèn)權(quán)限。

      可選的,所述裝置還包括:

      虛擬調(diào)用確定單元,用于在所述請(qǐng)求接收單元接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求后,根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定其是否對(duì)應(yīng)于虛擬系統(tǒng)調(diào)用,并在不對(duì)應(yīng)時(shí),觸發(fā)所述權(quán)限判斷單元工作;

      虛擬調(diào)用權(quán)限判斷單元,用于當(dāng)所述虛擬調(diào)用確定單元的輸出為是時(shí),判 斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述虛擬系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,并在具有時(shí),允許所述執(zhí)行者執(zhí)行所述虛擬系統(tǒng)調(diào)用。

      此外,本申請(qǐng)還提供另一種執(zhí)行系統(tǒng)調(diào)用的方法。請(qǐng)參考圖4,其為本申請(qǐng)?zhí)峁┑牧硪环N執(zhí)行系統(tǒng)調(diào)用的方法的實(shí)施例的流程圖,本實(shí)施例與上述方法實(shí)施例步驟相同的部分不再贅述,下面重點(diǎn)描述不同之處。本申請(qǐng)?zhí)峁┑牧硪环N執(zhí)行系統(tǒng)調(diào)用的方法包括:

      步驟401、接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求。

      在執(zhí)行本步驟之前,可以根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,指定每個(gè)系統(tǒng)調(diào)用以及預(yù)設(shè)的虛擬系統(tǒng)調(diào)用所屬類別,并設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      步驟402、根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定待執(zhí)行的目標(biāo)調(diào)用。

      所述系統(tǒng)調(diào)用的相關(guān)信息包括:系統(tǒng)調(diào)用名稱及參數(shù)值。

      本步驟可以根據(jù)系統(tǒng)調(diào)用名稱及參數(shù)值,判斷所述系統(tǒng)調(diào)用是否對(duì)應(yīng)于預(yù)設(shè)的虛擬系統(tǒng)調(diào)用,若是,將所述虛擬系統(tǒng)調(diào)用作為所述目標(biāo)調(diào)用,否則將所述系統(tǒng)調(diào)用作為所述目標(biāo)調(diào)用。

      步驟403、判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述目標(biāo)調(diào)用的訪問(wèn)權(quán)限,若具有,執(zhí)行步驟404,否則,執(zhí)行步驟405。

      在執(zhí)行步驟401之前,已經(jīng)為每個(gè)系統(tǒng)調(diào)用以及預(yù)設(shè)的虛擬系統(tǒng)調(diào)用指定了所屬類別,其中自然也包括所述目標(biāo)調(diào)用,因此本步驟可以獲取所述目標(biāo)調(diào)用所屬的系統(tǒng)調(diào)用類別,并可以獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限,然后根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述目標(biāo)調(diào)用所屬類別的訪問(wèn)權(quán)限,若具有,則執(zhí)行步驟404。

      步驟404、允許所述執(zhí)行者執(zhí)行所述目標(biāo)調(diào)用。

      步驟405、拒絕所述執(zhí)行者執(zhí)行所述目標(biāo)調(diào)用。

      在上述的實(shí)施例中,提供了另一種執(zhí)行系統(tǒng)調(diào)用的方法,與之相對(duì)應(yīng)的,本申請(qǐng)還提供另一種執(zhí)行系統(tǒng)調(diào)用的裝置。請(qǐng)參看圖5,其為本申請(qǐng)的另一種執(zhí)行系統(tǒng)調(diào)用的裝置的實(shí)施例的示意圖。由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。下述描述的裝置實(shí)施例僅僅是示意性的。

      本實(shí)施例的一種執(zhí)行系統(tǒng)調(diào)用的裝置,包括:請(qǐng)求接收單元501,用于接收?qǐng)?zhí)行系統(tǒng)調(diào)用的請(qǐng)求;目標(biāo)調(diào)用確定單元502,用于根據(jù)所述系統(tǒng)調(diào)用的相關(guān)信息,確定待執(zhí)行的目標(biāo)調(diào)用;訪問(wèn)權(quán)限判斷單元503,用于判斷所述系統(tǒng)調(diào)用的執(zhí)行者是否具有對(duì)所述目標(biāo)調(diào)用的訪問(wèn)權(quán)限;執(zhí)行允許單元504,用于當(dāng)所述訪問(wèn)權(quán)限判斷單元的輸出為是時(shí),允許所述執(zhí)行者執(zhí)行所述目標(biāo)調(diào)用;執(zhí)行拒絕單元505,用于當(dāng)所述訪問(wèn)權(quán)限判斷單元的輸出為否時(shí),拒絕所述執(zhí)行者執(zhí)行所述目標(biāo)調(diào)用。

      可選的,所述目標(biāo)調(diào)用確定單元,具體用于當(dāng)所述系統(tǒng)調(diào)用對(duì)應(yīng)于預(yù)設(shè)的虛擬系統(tǒng)調(diào)用時(shí),將所述虛擬系統(tǒng)調(diào)用作為所述目標(biāo)調(diào)用,否則將所述系統(tǒng)調(diào)用作為所述目標(biāo)調(diào)用。

      可選的,所述訪問(wèn)權(quán)限判斷單元,包括:

      目標(biāo)調(diào)用類別獲取子單元,用于獲取所述目標(biāo)調(diào)用所屬類別;

      訪問(wèn)權(quán)限獲取子單元,用于獲取所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限;

      目標(biāo)調(diào)用判斷執(zhí)行子單元,用于根據(jù)所述獲取的信息,判斷所述執(zhí)行者是否具有對(duì)所述目標(biāo)調(diào)用所屬類別的訪問(wèn)權(quán)限。

      可選的,所述裝置還包括:

      目標(biāo)調(diào)用類別指定單元,用于在所述請(qǐng)求接收單元工作之前,根據(jù)預(yù)先劃分的系統(tǒng)調(diào)用類別,指定所述目標(biāo)調(diào)用所屬類別;

      權(quán)限設(shè)置單元,用于設(shè)置所述執(zhí)行者對(duì)各類別系統(tǒng)調(diào)用的訪問(wèn)權(quán)限。

      本申請(qǐng)雖然以較佳實(shí)施例公開(kāi)如上,但其并不是用來(lái)限定本申請(qǐng),任何本領(lǐng)域技術(shù)人員在不脫離本申請(qǐng)的精神和范圍內(nèi),都可以做出可能的變動(dòng)和修改,因此本申請(qǐng)的保護(hù)范圍應(yīng)當(dāng)以本申請(qǐng)權(quán)利要求所界定的范圍為準(zhǔn)。

      在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

      內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。

      1、計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由 任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(pán)(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。

      2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1