U盤能方便我們共享數據,但你是不是有時候害怕別人隨便在你的電腦上拷貝私密的數據啊,呵呵.下面我就告訴你一個比較缺德的方法,來防止別人隨便用U盤從你的電腦上偷偷的拷貝數據.
使用UDEV機制,讓插入的U盤自動格式化.
在/etc/udev/rules.d/目錄下,新建一個75-usb.rules
的文件,當然,這個文件名中的數字和usb可以換成其他的,但rules這個後綴一定不要變.內容如下:
BUS=="usb", ACTION=="add", DIRVER=="usb-storage", NAME="xiaosu", RUN="/sbin/mkfs.vfat /dev/xiaosu"
意思就是,如果插入的USB設備是存儲設備,就在/dev
下建立的節點就叫xiaosu,然後用mkfs.vfat這個命令來格式化它.效果如下:
我們先前的U盤
把這個配置文件保存之後,U盤拔出再插入:
我們發現
U盤裡面已經沒有任何東西了.
你可能會疑問了:這樣不是把所有插入的U盤都給格式化了嗎,如果我不想讓系統格式化我自己的U盤,而只是格式化別人的U盤呢?
這樣好辦,我們在這個配置文件中加入一條規則,判斷這個設備是不是屬於你.
首先將不想被格式化的
U盤插入,我已我的8G的U盤為例:
首先把U盤中的數據備份一下,然後將U盤插入,使用mount命令,可以知道我的U盤被識別為了/dev/sdb4
,截圖如下
現在我探測一下我的U盤的序列號之類的能確保U盤身份唯一性的信息.
使用如下命令:
udevinfo -a -p $(udevinfo -q path -n /dev/sdb) |grep serial
當然,這裡的
sdb要換成你對應的信息.
截圖如下:
這裡發現,有兩個serial
我們用udevinfo -a -p $(udevinfo -q path -n /dev/sdb) 這個命令,仔細查看信息,發現:
第一個serial對應的是
product是USB DISK截圖如下:
第二個serial對應的product是 HOST Controller
截圖如下:
我們修改配置文件為:
BUS=="usb", ACTION=="add", DIRVER=="usb-storage", NAME="xiaosu", SYSFS{serial}!="07A71A002345111E", SYSFS{serial}!="0000:00:1d.7", RUN="/sbin/mkfs.ext3"
這一行的意思就是:
如果插入了USB的存儲設備,先把建立的節點重命名為xiaosu,然後檢測一下這個設備的序列號,如果不等於這兩個,就格式化它.
這兩個serial
都要用到!少一個都不行,.並且需要注意的是,這裡的序列號要改成你的U盤的序列好.
說實話,這樣做確實有些缺德.....並且,這樣做對系統還有一定的風險,比如說哪一天,你拿著一個其他人的有重要數據的U盤,一不小心給忘記了,就插入了,然後就悲劇了........
現在我們修改一下這個配置文件,不要格式化別人的
U盤了,我們只是讓系統不掛載它就是了.這樣,別人插入U盤之後,發現系統一直沒有反應,就會懷疑是USB介面損壞或者其他原因,就作罷了.我們把配置文件修改為:
BUS=="usb", ACTION=="add", DIRVER=="usb-storage", NAME="xiaosu", SYSFS{serial}!="07A71A002345111E", SYSFS{serial}!="0000:00:1d.7", RUN="/bin/rm -f /dev/xiaosu"
也就是把面的RUN命令改為/bin/rm -f /dev/xiaosu
這樣.系統就會刪除這個節點,更談不上掛載了.....
經過我測試,系統目前只能“識別”我的這個8G的U盤,其他都已經“識別
”不了了.
更多的操作,可以通過man udev來研究它的規則,然後就是發揮你的想象力,進行無窮的創造了.......
再說一下系統識別設備的步驟:
1.內核發現設備,然後將探測到的系統的各種信息傳遞給sysfs
2.系統會把這個設備的這個事件給
udev傳遞個提示消息3.udev會在/dev下創建這個設備的節點,然後根據rules文件的設置執行相應的指令
4.udev會通過一個介面給HAL發送一個提醒
本文出自 「飛翔的單車」 博客,請務必保留此出處http://xiaosu.blog.51cto.com/2914416/544315
[火星人 ] Linux下自動格式化插入的U盤和另外兩則案例已經有343次圍觀