一種Linux能力分配方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請涉及電數(shù)字?jǐn)?shù)據(jù)處理領(lǐng)域,尤其涉及一種在使用Linux系統(tǒng)的移動(dòng)終端中對其應(yīng)用或系統(tǒng)服務(wù)的能力進(jìn)行分配的方法和裝置。
【背景技術(shù)】
[0002]在Linux系統(tǒng)中,進(jìn)程在執(zhí)行某些命令時(shí)需要Root權(quán)限。如果擁有Root權(quán)限的進(jìn)程被攻擊者劫持,那么該攻擊者就可以做所有的事情,非常危險(xiǎn)。為了解決這個(gè)問題,Linux開發(fā)出了一種capability(能力)機(jī)制,其將Root所擁有的權(quán)限進(jìn)行了劃分,分解成了30多種不同的能力。按進(jìn)程的需要配置能力,確保進(jìn)程權(quán)限的最小化,進(jìn)而提高進(jìn)程的安全性。
[0003]現(xiàn)有方案通常利用setcap命令,為指定的執(zhí)行文件設(shè)置能力,能力值會寫到該文件的擴(kuò)展屬性中。在執(zhí)行該執(zhí)行文件時(shí),在Kernel(內(nèi)核)中的exec調(diào)用中,讀取該文件的擴(kuò)展屬性,如果發(fā)現(xiàn)該執(zhí)行文件設(shè)置了能力,則為進(jìn)程設(shè)置相應(yīng)的能力。
[0004]然而,為執(zhí)行文件設(shè)置能力的現(xiàn)有方案存在兩個(gè)問題:I)執(zhí)行文件只有擁有能力和沒有能力兩種狀態(tài)。這樣,對于執(zhí)行文件來講,有些場合需要能力,有些則不需要,這種機(jī)制無法滿足。2)原來有Root賬號時(shí),所運(yùn)行的命令都不需要設(shè)置能力?,F(xiàn)在去掉Root賬號后,原來所有需要特權(quán)的命令都需要設(shè)置能力,導(dǎo)致設(shè)置能力的命令過多。
【發(fā)明內(nèi)容】
[0005]本申請的目標(biāo)在于提供一種提高能力設(shè)置簡便性并確保系統(tǒng)安全的能力分配方法及裝置。
[0006]本申請的目標(biāo)由一種Linux能力分配方法實(shí)現(xiàn),該方法包括:
[0007]確定移動(dòng)終端的應(yīng)用或系統(tǒng)服務(wù)所需的能力;
[0008]將所述能力與所述應(yīng)用或系統(tǒng)服務(wù)的用戶標(biāo)識Uid之間的對應(yīng)關(guān)系保存到配置文件中;
[0009]在以一uid的身份啟動(dòng)所述應(yīng)用或系統(tǒng)服務(wù)時(shí),為相應(yīng)啟動(dòng)進(jìn)程設(shè)置uid,讀取所述配置文件并獲取與uid對應(yīng)的能力;及
[0010]為運(yùn)行所述應(yīng)用或系統(tǒng)服務(wù)的進(jìn)程設(shè)置與所述身份的uid對應(yīng)的能力。
[0011 ]本申請的目標(biāo)還由一種Linux能力分配裝置實(shí)現(xiàn),該裝置包括:
[0012]能力確定模塊,用于確定移動(dòng)終端的應(yīng)用或系統(tǒng)服務(wù)所需的能力;
[0013]能力保存模塊,用于將所述能力與所述應(yīng)用或系統(tǒng)服務(wù)的用戶標(biāo)識Uid之間的對應(yīng)關(guān)系保存到配置文件中;
[0014]文件讀取模塊,用于在以一uid的身份啟動(dòng)所述應(yīng)用或系統(tǒng)服務(wù)時(shí),為相應(yīng)啟動(dòng)進(jìn)程設(shè)置uid,讀取所述配置文件并獲取與所述身份的uid對應(yīng)的能力;及
[0015]能力設(shè)置模塊,用于為運(yùn)行所述應(yīng)用或系統(tǒng)服務(wù)的進(jìn)程設(shè)置與所述身份的uid對應(yīng)的能力。
[0016]通過本發(fā)明的方法和裝置,解決了因去掉Root賬號后設(shè)置能力權(quán)限的命令過多的問題,也解決了執(zhí)行文件在某些場合需要能力、某些場合不需要能力的問題,即解決了有些命令在不同的場合需要不同權(quán)限的問題。
[0017]除非明確指出,在此所用的單數(shù)形式“一”、“該”均包括復(fù)數(shù)含義(即具有“至少一”的意思)。應(yīng)當(dāng)進(jìn)一步理解,說明書中使用的術(shù)語“具有”、“包括”和/或“包含”表明存在所述的特征、步驟、操作、元件和/或部件,但不排除存在或增加一個(gè)或多個(gè)其他特征、步驟、操作、元件、部件和/或其組合。如在此所用的術(shù)語“和/或”包括一個(gè)或多個(gè)列舉的相關(guān)項(xiàng)目的任何及所有組合。除非明確指出,在此公開的任何方法的步驟不必精確按照所公開的順序執(zhí)行。
【附圖說明】
[0018]本發(fā)明將在下面參考附圖并結(jié)合優(yōu)選實(shí)施例進(jìn)行更完全地說明。
[0019]圖1為根據(jù)本發(fā)明方法的一實(shí)施例的流程圖。
[0020]圖2為根據(jù)本發(fā)明裝置的一實(shí)施例的結(jié)構(gòu)示意圖。
[0021]為清晰起見,這些附圖均為示意性及簡化的圖,它們只給出了對于理解本發(fā)明所必要的細(xì)節(jié),而省略其他細(xì)節(jié)。
【具體實(shí)施方式】
[0022]通過下面給出的詳細(xì)描述,本發(fā)明的適用范圍將顯而易見。然而,應(yīng)當(dāng)理解,在詳細(xì)描述和具體例子表明本發(fā)明優(yōu)選實(shí)施例的同時(shí),它們僅為說明目的給出。
[0023]圖1示出了根據(jù)本發(fā)明的、用于在使用Linux系統(tǒng)的移動(dòng)終端如手機(jī)中對其系統(tǒng)服務(wù)或應(yīng)用的能力進(jìn)行分配的方法。該方法改變目前將能力與執(zhí)行文件結(jié)合的機(jī)制,提出使能力與Linux的uid機(jī)制相結(jié)合,為指定的uid設(shè)置能力,從而避免了設(shè)置能力命令過多的問題,且解決了有些命令在不同的場合需要不同權(quán)限的問題,提高了系統(tǒng)安全性。該方法開始于步驟S10,確定移動(dòng)終端如手機(jī)的應(yīng)用或系統(tǒng)服務(wù)所需的能力。例如,在安裝新的應(yīng)用時(shí),通過向移動(dòng)終端的系統(tǒng)聲明需要哪些能力而確定該新的應(yīng)用所需的能力,例如將所需能力寫到系統(tǒng)的配置文件中,如/etc/passwd。之后,處理進(jìn)行到步驟S20,在配置文件中,保存能力與應(yīng)用或系統(tǒng)服務(wù)的用戶標(biāo)識uid之間的對應(yīng)關(guān)系。例如,系統(tǒng)服務(wù)servicel需要能力I,系統(tǒng)服務(wù)service2需要能力2,應(yīng)用appl需要能力3,應(yīng)用app2需要能力4,依此類推,其中861^;[061、861^;[062、3口口1和3口口2為相應(yīng)系統(tǒng)服務(wù)或應(yīng)用的用戶標(biāo)識111(1,每一系統(tǒng)服務(wù)或應(yīng)用具有一個(gè)唯一的uid。之后,處理進(jìn)行到步驟S30,在以一 uid如appl的身份啟動(dòng)應(yīng)用時(shí),修改擁有setuid(設(shè)置用戶標(biāo)識)權(quán)限的進(jìn)程,在啟動(dòng)進(jìn)程將uid設(shè)置為appl的同時(shí)將組標(biāo)識gid設(shè)置為appl即setgid(appl),讀取配置文件,獲得與appl對應(yīng)的能力即能力3。之后,處理進(jìn)行到步驟S40,調(diào)用setcap命令為運(yùn)行應(yīng)用appl的進(jìn)程設(shè)置能力3。
[0024]圖2示出了根據(jù)本發(fā)明的Linux能力分配裝置的一實(shí)施例,其包括:能力確定模塊10,用于確定移動(dòng)終端的應(yīng)用或系統(tǒng)服務(wù)所需的能力;例如,對于新的應(yīng)用,可通過向移動(dòng)終端的系統(tǒng)進(jìn)行聲明而確定所需的能力;能力保存模塊20,用于將所述能力與所述應(yīng)用或系統(tǒng)服務(wù)的用戶標(biāo)識uid之間的對應(yīng)關(guān)系保存到配置文件中;文件讀取模塊30,用于在以一uid的身份啟動(dòng)所述應(yīng)用或系統(tǒng)服務(wù)時(shí),為相應(yīng)啟動(dòng)進(jìn)程設(shè)置uid和設(shè)置組標(biāo)識gid,讀取所述配置文件并獲取與所述身份的uid對應(yīng)的能力;及能力設(shè)置模塊40,用于通過調(diào)用setcap命令為運(yùn)行所述應(yīng)用或系統(tǒng)服務(wù)的進(jìn)程設(shè)置與所述身份的Uid對應(yīng)的能力。
[0025]—些優(yōu)選實(shí)施例已經(jīng)在前面進(jìn)行了說明,但是應(yīng)當(dāng)強(qiáng)調(diào)的是,本發(fā)明不局限于這些實(shí)施例,而是可以本發(fā)明主題范圍內(nèi)的其它方式實(shí)現(xiàn)。
【主權(quán)項(xiàng)】
1.一種Linux能力分配方法,其特征在于,所述方法包括: 確定移動(dòng)終端的應(yīng)用或系統(tǒng)服務(wù)所需的能力; 將所述能力與所述應(yīng)用或系統(tǒng)服務(wù)的用戶標(biāo)識uid之間的對應(yīng)關(guān)系保存到配置文件中; 在以一uid的身份啟動(dòng)所述應(yīng)用或系統(tǒng)服務(wù)時(shí),為相應(yīng)啟動(dòng)進(jìn)程設(shè)置uid,讀取所述配置文件并獲取與uid對應(yīng)的能力;及 為運(yùn)行所述應(yīng)用或系統(tǒng)服務(wù)的進(jìn)程設(shè)置與所述身份的uid對應(yīng)的能力。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,確定所述能力的步驟通過向移動(dòng)終端的系統(tǒng)聲明進(jìn)行。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 為所述啟動(dòng)進(jìn)程設(shè)置組標(biāo)識gid。4.根據(jù)權(quán)利要求1所述的方法,其特征在于,設(shè)置能力的步驟通過setcap命令進(jìn)行。5.一種Linux能力分配裝置,其特征在于,所述裝置包括: 能力確定模塊,用于確定移動(dòng)終端的應(yīng)用或系統(tǒng)服務(wù)所需的能力; 能力保存模塊,用于將所述能力與所述應(yīng)用或系統(tǒng)服務(wù)的用戶標(biāo)識uid之間的對應(yīng)關(guān)系保存到配置文件中; 文件讀取模塊,用于在以一 Uid的身份啟動(dòng)所述應(yīng)用或系統(tǒng)服務(wù)時(shí),為相應(yīng)啟動(dòng)進(jìn)程設(shè)置Uid,讀取所述配置文件并獲取與所述身份的Uid對應(yīng)的能力;及 能力設(shè)置模塊,用于為運(yùn)行所述應(yīng)用或系統(tǒng)服務(wù)的進(jìn)程設(shè)置與所述身份的Uid對應(yīng)的能力。6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述能力確定模塊通過向移動(dòng)終端的系統(tǒng)進(jìn)行聲明而確定所需的能力。7.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述裝置還包括: 組標(biāo)識設(shè)置模塊,用于為所述啟動(dòng)進(jìn)程設(shè)置組標(biāo)識gid。8.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述能力設(shè)置模塊通過setcap命令設(shè)置能力。
【專利摘要】本申請公開了一種Linux能力分配方法及裝置,其中所述方法包括:確定移動(dòng)終端的應(yīng)用或系統(tǒng)服務(wù)所需的能力;將所述能力與所述應(yīng)用或系統(tǒng)服務(wù)的用戶標(biāo)識uid之間的對應(yīng)關(guān)系保存到配置文件中;在以一uid的身份啟動(dòng)所述應(yīng)用或系統(tǒng)服務(wù)時(shí),為相應(yīng)啟動(dòng)進(jìn)程設(shè)置uid,讀取所述配置文件并獲取與uid對應(yīng)的能力;及為運(yùn)行所述應(yīng)用或系統(tǒng)服務(wù)的進(jìn)程設(shè)置與所述身份的uid對應(yīng)的能力。本申請的方法和裝置使得在確保系統(tǒng)安全的同時(shí)能更簡便地設(shè)置能力。
【IPC分類】G06F21/57
【公開號】CN105653960
【申請?zhí)枴?br>【發(fā)明人】史子旺
【申請人】北京元心科技有限公司
【公開日】2016年6月8日
【申請日】2015年12月31日