国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Linux的USB移動(dòng)設(shè)備的控制與研究

2015-03-16 09:53:37翟哲
電腦知識(shí)與技術(shù) 2015年1期
關(guān)鍵詞:移動(dòng)設(shè)備

翟哲

摘要:USB可移動(dòng)設(shè)備所造成的數(shù)據(jù)丟失日益嚴(yán)重,對(duì)USB設(shè)備有效的控制,可以阻止數(shù)據(jù)的泄露。該文主要研究基于Linux環(huán)境下對(duì)USB移動(dòng)設(shè)備進(jìn)行控制,并且從驅(qū)動(dòng)模型和用戶態(tài)這兩個(gè)不同層次提出了可行的USB移動(dòng)設(shè)備訪問控制機(jī)制。針對(duì)各自不同的特點(diǎn),對(duì)相應(yīng)的關(guān)鍵技術(shù)與可行性進(jìn)行了分析。這兩種方法均可以有效地進(jìn)行USB移動(dòng)設(shè)備的控制。

關(guān)鍵詞:USB 移動(dòng)設(shè)備;UDEV;驅(qū) 動(dòng)程序

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)01-0168-04

Control and Research of USB Mobile Equipment Based on Linux

ZHAI Zhe1,2

(1.School of Information, Qingdao University of Science and Technoloty, Qingdao 266042, China; 2.Heze Medical College, Heze 274000,China

Abstract: USB mobile equipment caused by the loss of data is becoming increasingly serious, to control the USB device effectively, can prevent data leakage effectively. This paper mainly studies based on Linux of USB under the environment of mobile devices for control, and from the driver model and the user state of the two different levels of proposed USB mobile equipment feasible access control mechanism. According to the different characteristics, the key technique and analyzes the feasibility of corresponding. These two methods are effective for USB mobile device access control.

Key words: USB mobile equipment; UDEV; divers

Linux操作系統(tǒng)[7]是一款自由軟件。它功能強(qiáng)大、源碼公開、結(jié)構(gòu)清晰,已成為一個(gè)安全可靠功能完善的系統(tǒng)。所以在一些安全部門得了廣泛的應(yīng)用。USB總線是IBM、INTEL等公司聯(lián)合提出的一種新的通用串行總線。USB移動(dòng)設(shè)備在Linux操作系統(tǒng)下得到了廣泛應(yīng)用[8]。USB移動(dòng)設(shè)備具有體積小、支持熱插拔等優(yōu)勢(shì),已應(yīng)用到了各種場(chǎng)合。用戶在享受它的易用性的同時(shí),也面臨著帶來的數(shù)據(jù)泄露問題[4]。尤其是學(xué)校承擔(dān)的國(guó)家一級(jí)、二級(jí)等級(jí)考試,為了阻止數(shù)據(jù)泄露和計(jì)算機(jī)病毒侵入考試系統(tǒng)就需要禁用USB設(shè)備的使用。曾調(diào)查機(jī)構(gòu)也明確指出,有49%的機(jī)密資料泄漏都與USB可移動(dòng)設(shè)備有關(guān)。由此可見,對(duì)USB移動(dòng)設(shè)備進(jìn)行訪問控制是非常必要的,特別是國(guó)家保密機(jī)構(gòu)單位來說。

1 基于udev 控制USB移動(dòng)設(shè)備

1.1 什么是udev

udev 是 Linux Kernel2.6 [2]以上內(nèi)核里的一個(gè)功能,不同于早期的Linux設(shè)備管理工具。它替代了hotplug(熱插拔)及 devfs,成為目前 Linux操作系統(tǒng)的設(shè)備工具集。udev 通過用戶空間并以守護(hù)進(jìn)程的方式運(yùn)行,如果要管理 /dev目錄下的USB設(shè)備,那么就通過偵聽內(nèi)核發(fā)出來的 uevent 事件。不像之前的設(shè)備管理器,udev不在內(nèi)核空間 (kernel space) 運(yùn)行,而在用戶空間 (user space)[2] 運(yùn)行。用戶能夠指 定 不 同 的硬件設(shè)備來使用不同的設(shè)備文件。其工作流程如圖1:

Udev 添 加 硬件設(shè)備[5]的操作步驟如下:

1) 首先在LINUX操作系統(tǒng)內(nèi)核啟動(dòng)進(jìn)程中,每條總線的驅(qū)動(dòng)程序都要通過總線協(xié)議為每個(gè)硬件設(shè)備建立一個(gè)設(shè)備對(duì)象。內(nèi)核中每個(gè)總線對(duì)象都有一個(gè) kset 對(duì)象,每個(gè)硬件設(shè)備都嵌入了一個(gè) 對(duì)象 kobject。

把Kobject對(duì)象連接到kset上,這樣總線與設(shè)備之間就組成了一顆樹狀結(jié)構(gòu)。如果總線驅(qū)動(dòng)程序掃描到該設(shè)備對(duì)象時(shí),它將對(duì)kobject()對(duì)象初始化,并且把它連接該設(shè)備樹上,也會(huì)同時(shí)調(diào)用這個(gè)函數(shù)kobject uevent()。這個(gè)函數(shù)會(huì)把從systs中獲取相關(guān)的信息及添加新設(shè)備事件通過netlink發(fā)送到用戶態(tài)中。

2) 在用戶態(tài),udevd通過創(chuàng)建socket機(jī)制連接來獲得內(nèi)核的uevent事件,并對(duì)這個(gè)uevernt事件進(jìn)行解析。

3) Udev進(jìn)程讀取文件(/etc/udev/udev.conf)中設(shè)置的規(guī)則文件所在的目錄。

4) Udev進(jìn)程將/etc/udev/rules.d規(guī)則文件讀取到內(nèi)存。Udev并逐個(gè)檢驗(yàn)該目錄下的文件,該目錄下的文件都是針對(duì)某個(gè)設(shè)備必須實(shí)施掃描的規(guī)則文件。

5) Udev會(huì)按照文件名的字符編碼(ASCII)順序來讀取全部的規(guī)則文件。

如果Udev找到了與新設(shè)備相符合的規(guī)則時(shí),那么將按規(guī)則定義的舉措在/dev下創(chuàng)建設(shè)備文件,并完成驅(qū)動(dòng)模塊的加載以及其他的附加操作。

1.2 基于udev 控制USB存儲(chǔ)設(shè)備設(shè)計(jì)方案

當(dāng) Udev設(shè)備管理器動(dòng)態(tài)添加或刪除設(shè)備時(shí),因?yàn)橐?guī)則是UDEV中最重要的一部分,默認(rèn)存放的位置就是在/ etc/ udev/ rules.d下,所以這種行 為主要受到/ etc/ udev/ rules.d中的規(guī)則文件控制。Udev 規(guī)則 中的守 護(hù) 進(jìn) 程將監(jiān)視來自內(nèi)核的 uevent 事 件,從而添加或刪除/dev / 目錄下的相應(yīng)設(shè)備文件。Udev 設(shè)備管理器僅為已添加的 設(shè)備產(chǎn)生相應(yīng)的 設(shè)備文件,但對(duì)無用的、多余 的設(shè)備文件不會(huì)產(chǎn)生。在/etc/ udev / rules.d目錄下加上一條規(guī)則,然后對(duì)插入電腦上的所有設(shè)備與USB可移動(dòng)設(shè)備進(jìn)行相匹 配,如果一旦 搭 配 成功,那么忽略 該 設(shè)備 插入 uevent 事件并拒絕為該設(shè)備插入事件做任何處理。這就成功實(shí)現(xiàn)了USB移動(dòng)設(shè)備禁用的目的。

首先介紹常用的Udev鍵,如下表所示。

通過以上 規(guī) 則,如果當(dāng) Udevd 獲 得 設(shè) 備 插 入 事 件uevent 時(shí),那么它將讀取這個(gè)規(guī)則并詢問匹配這個(gè)設(shè)備的 驅(qū)動(dòng) 是 否 為 usb,如果搭 配 成 功,那么就表示當(dāng)前計(jì)算機(jī)中插入的硬件設(shè)備是USB設(shè)備,否則跳過執(zhí)行這個(gè)uevent事件的操作,并對(duì)設(shè)備插入事件不做 任 何 操作與處理。工作過程如圖2所示。

通 過成 功配 置 UDEV規(guī) 則,已經(jīng)實(shí)現(xiàn)了對(duì)USB移動(dòng)設(shè)備的訪問與控制。此方法優(yōu)點(diǎn):第一 實(shí)現(xiàn)比較簡(jiǎn)單,第二不需要編程實(shí)現(xiàn),只是通過配置udev規(guī)則提供的工具及配置的規(guī)則文件就可實(shí)現(xiàn)對(duì)USB移動(dòng)設(shè)備的禁用。這種方法的缺點(diǎn):一方面,因?yàn)樵O(shè)備訪問控制是在用戶層實(shí)現(xiàn)的,所以容易被旁路。而另一方面,訪問控制粒度比較大,對(duì)USB設(shè)備的讀寫控制無法實(shí)現(xiàn)。

因?yàn)轵?qū)動(dòng)程序是在內(nèi)核模塊[1]中實(shí)現(xiàn)的,所以這種方式要比用 戶 空間(user space)守 護(hù)進(jìn)程要可靠、安全。正因?yàn)檫@一點(diǎn)又相繼提出了關(guān)于驅(qū)動(dòng)的USB移動(dòng)設(shè)備 控 制 的研究,從而來改進(jìn)易被 旁 路及 控 制 粒度大的問題。

2 基于驅(qū)動(dòng)程序控制USB移動(dòng)設(shè)備

2.1 了解Linux操作系統(tǒng) 內(nèi) 核 加載USB設(shè)備驅(qū)動(dòng)過程[3]

Linux作為開源系統(tǒng)操作系統(tǒng)已經(jīng)實(shí)現(xiàn)了對(duì)USB的支持,從一定意義上說,對(duì)USB的支持越強(qiáng)大,Linux應(yīng)用的也越廣泛。首先介紹一下USB總線體系結(jié)構(gòu),如圖3所示。

通過以上圖1可知,usb總線結(jié)構(gòu)采用的是分層星形結(jié)構(gòu),主機(jī)是該結(jié)構(gòu)的瓶頸,每一個(gè)USB設(shè)備都要通過集線器(HUB中心)連接主機(jī)的,根集線器(主HUB)提供USB的連接點(diǎn),全部的傳輸事物都是由主機(jī)發(fā)起的。如果一個(gè)USB 設(shè)備插入集線器時(shí),那么該集線器的 狀 態(tài)就會(huì)發(fā)生變化。當(dāng)系統(tǒng)收 到這個(gè) 狀 態(tài)變 化 后,它 將會(huì)為該USB 移動(dòng)設(shè) 備 建立一個(gè)硬件設(shè) 備 對(duì) 象kobject,然后把相應(yīng)的USB總線(BUS)設(shè)備 列 表 及 USB 子 系 統(tǒng) 添 加 到 USB設(shè)備中;緊接著將會(huì)調(diào)用 函 數(shù) bus_ attach _ device (),然后與該設(shè) 備 驅(qū) 動(dòng)程序進(jìn)行相 匹 配。如果 搭配成功,那么該系統(tǒng)將為這個(gè)USB設(shè)備向usb總線類型注冊(cè),并完成相應(yīng)驅(qū)動(dòng)程序的加載過程。

2.2 基于驅(qū)動(dòng)控制USB移動(dòng)設(shè)備設(shè)計(jì)方法

通過調(diào)用的驅(qū)動(dòng)所屬總線的probe()函數(shù)可以有效控制USB驅(qū)動(dòng)程序模塊的加載。當(dāng)USB設(shè)備在與驅(qū)動(dòng)程序的匹 配 過 程中,將會(huì)調(diào) 用 probe()探測(cè) 函 數(shù)并判斷驅(qū)動(dòng)與所插入的設(shè)備是否相匹配。如果調(diào)用函數(shù)匹配成功則返回1,那么則返回0。 從而使USB移動(dòng)存儲(chǔ)設(shè)備無法匹配到合適的驅(qū)動(dòng),這樣就達(dá)到USB移動(dòng)存儲(chǔ)設(shè)備禁用的目的。整個(gè)實(shí)現(xiàn)過程如圖4。

在Linux 內(nèi) 核 目 錄中當(dāng) 總 線 驅(qū) 動(dòng) 掃 描 到 該 USB 設(shè)備 時(shí),系統(tǒng)為設(shè)備建立一個(gè) 對(duì) 象,然后就會(huì)調(diào)用 probe() 探測(cè) 函 數(shù)并判斷是否為USB移動(dòng)設(shè)備。如果檢測(cè)結(jié)果不是USB設(shè)備則返回1,否則檢測(cè)結(jié)果是USB設(shè)備則返回0并將全部的后續(xù)操作中 斷。在系統(tǒng)測(cè)試中如果插入優(yōu)盤,它將會(huì)提示已發(fā)現(xiàn)USB設(shè)備,然后并禁用該設(shè)備,并提醒用戶將該硬件設(shè)備插入事件。該方法是在內(nèi)核驅(qū)動(dòng)層實(shí)現(xiàn)的,不容易旁路的。

總之,文中分別從用戶態(tài)、驅(qū)動(dòng)機(jī)制這兩個(gè)方面分別提出了兩種可行有效的USB移動(dòng)設(shè)備控制方案。第一種方案是根據(jù)配置UDEV規(guī)則來實(shí)現(xiàn)的,這種方案實(shí)現(xiàn)較簡(jiǎn)單,不需要編程,但訪問控制難度大,也不能完成讀 寫的控制。而另一種方案是在驅(qū)動(dòng)程序下訪問控制USB設(shè)備,此方案利用了探測(cè)函數(shù) probe()來控制 USB程序模塊的加載,這種方案不容易被旁路。

參考文獻(xiàn):

[1] Robert Love. Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)[M].陳君,等,譯.北京:機(jī)械工業(yè)出版社,2004.

[2] Corbet J, Rubini A,Kroah-Hartman G . Linux Device Driver 2th .OReilly, 2007.4

[3] Alessandro Rubini. Linux設(shè)備驅(qū)動(dòng)程序[M]. LISOLEG,譯.北京:中國(guó)電力出版社,2001.

[4] 計(jì)世網(wǎng)Ice.妥善管理USB防止數(shù)據(jù)泄露[EB/0l].2012-07-01.http://soft.ccw.com.cn/news/htm2008/20080531.htm

[5] http://zh.wikipedia.org/wiki/udev

[6] http://www.ibm.com/developerworks/cn/linux/l-cn-udev/index.html?ca=drs-cn-0304

[7] 肖季東,劉巖.Linux那些事兒之我是USB[M].北京:電子工業(yè)出版社,2010.

[8] Bovet D2,casati M.Understanding the Linux Kernel[M].南京:東南大學(xué)出版社,2006.

猜你喜歡
移動(dòng)設(shè)備
移動(dòng)端界面設(shè)計(jì)中“容錯(cuò)性”思考
基于移動(dòng)設(shè)備的富媒體兒童電子書研究
CSS3在響應(yīng)式網(wǎng)頁設(shè)計(jì)中的應(yīng)用
增強(qiáng)型兒童電子書《三字經(jīng)》的設(shè)計(jì)與實(shí)現(xiàn)
無線網(wǎng)絡(luò)在校園中的重要性
增強(qiáng)現(xiàn)實(shí)技術(shù)在移動(dòng)學(xué)習(xí)中的應(yīng)用芻議
岫岩| 乳山市| 拉孜县| 射洪县| 武冈市| 翁牛特旗| 宣汉县| 旌德县| 邻水| 西畴县| 关岭| 基隆市| 定襄县| 周宁县| 梁河县| 航空| 碌曲县| 图木舒克市| 南江县| 南澳县| 永川市| 长顺县| 广安市| 睢宁县| 曲松县| 靖宇县| 蒙自县| 云和县| 九龙城区| 蓬莱市| 桑日县| 额济纳旗| 达州市| 康保县| 商河县| 扶绥县| 铜川市| 台北市| 普兰县| 汉中市| 安多县|