使用 EncFS 來保護個人資料

常言道:『飲水思源』,在 Open Source 的世界裡,我們常常需要別人的幫助,但是在您有所心得的時候請記得分享給大家,『幫助人是快樂的喔』。歡迎您在使用 debian 的過程中的任何心得分享給大家。

使用 EncFS 來保護個人資料

文章louie » 週六 5月 21, 2005 9:07 pm

一般來說,個人資料都是放在家目錄中的某個地方,只是靠權限來做保護,但今天若有個人拿張 KNOPPIX 來這台電腦開機,就可以完全讀取硬碟上的任何資料。
基於這個原因,我們就可以用 EncFS 來將某些目錄保護起來,將重要的資料放在裡面,即使是 root 也無法直接存取,除非是有開放權限,否則被拿去的資料也只是廢物一堆。

首先裝上 encfs 及 fuse,因為 encfs 是使用 fuse 來存取
代碼: 選擇全部
apt-get install encfs fuse-source fuse-utils
cd /usr/src
tar jxvf fuser.tar.bz2


安裝 fuse 模組
debian recommended way(建議方法)
代碼: 選擇全部
module-assistant build fuse
module-assistant install fuse

or
代碼: 選擇全部
module-assistant auto-install fuse

or
代碼: 選擇全部
m-a a-i fuse

debian obsolete way(舊方法)
代碼: 選擇全部
apt-get install kernel-headers-2.4.27-1-686
cd /usr/src/kernel-headers-2.4.27-1-686
make-kpkg modules
dpkg -i ../fuse-module-2.4.27*

建立新的加密檔案系統,加密過的 raw data 放在 ~/.crypt,而一般檔案則由 ~/crypt 來存取
目錄必須為絕對路徑(absolute path)
代碼: 選擇全部
encfs ~/.crypt ~/crypt
The directory “/home/louie/.crypt” does not exist. Should it be created? (y,n) y
The directory “/home/louie/crypt” does not exist. Should it be created? (y,n) y
Creating new encrypted volume.
Please choose from one of the following options:
enter “x” for expert configuration mode,
enter “p” for pre-configured paranoia mode,
anything else, or an empty line will select standard mode.
?> # 按 Enter 鍵表示使用 standard 模式、按 x 或 p 為其他模式
Standard configuration selected.

Configuration finished. The filesystem to be created has
the following properties:
Filesystem cipher: “ssl/blowfish", version 2:1:1
Filename encoding: “nameio/block", version 3:0:1
Key Size: 160 bits
Block Size: 512 bytes
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.

Now you will need to enter a password for your filesystem.
You will need to remember this password, as there is absolutely
no recovery mechanism. However, the password can be changed
later using encfsctl.

New Encfs Password: # 設定密碼
Verify Encfs Password:

此時,檔案系統已經掛載了,拷貝個檔案進去、建個目錄看看:
代碼: 選擇全部
cp test_encfs.txt ~/crypt
mkdir ~/crypt/test_directory

ls -l ~/crypt
drwx—— 2 louie louie 1024 May 21 16:40 test_directory
-rw——- 1 louie louie 20706 May 21 16:35 test_encfs.txt

這時再看看 raw data 的內容:
代碼: 選擇全部
ls -l ~/.crypt
-rw——- 1 louie louie 20714 May 21 16:35 DgTU2VPoPC2ytVEJNxjzNjMk
drwx—— 2 louie louie 1024 May 21 16:40 pvyjNgik1QdnumlNuDu4BUvT

都是一些奇怪的名稱,目錄依然是有辦法 cd 進去,但 cat 檔案則看到一堆亂碼,此時,就算是使用 root 依然是沒權限看我們的檔案
代碼: 選擇全部
su -

id
uid=0(root) gid=0(root) groups=0(root)

ls -l ~louie/crypt
ls: /home/louie/crypt: Permission denied

不錯吧 !
代碼: 選擇全部
df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 1929068 1408624 422452 77% /
tmpfs 254340 4 254336 1% /dev/shm
.
.
encfs 489992 9098 455594 2% /home/louie/crypt

將 filesystem umount(由於 encfs 並沒有 umount 參數,而encfs 是呼叫 fuse 來做事,因此用 fusermount -u 來 umount)
代碼: 選擇全部
fusermount -u ~/crypt

上面使用 df 看到的 FileSystem 是 encfs,也可用 fsname (fuse 的參數) 來設定看到的 FileSystem 名稱
代碼: 選擇全部
encfs ~/.crypt ~/crypt – -o fsname=/dev/data

df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda1 1929068 1408624 422452 77% /
tmpfs 254340 4 254336 1% /dev/shm
.
.
/dev/data 489992 9098 455594 2% /home/louie/crypt

若是要讓 root 或是其他使用者也能夠讀取 encfs 目錄,放參數在 /etc/fuse.conf
代碼: 選擇全部
user_allow_other

接著 mount 時加上參數 allow_root、allow_other
代碼: 選擇全部
encfs ~/.crypt ~/crypt – -o fsname=/dev/data,allow_root

這樣 root 就可讀取

另外 encfs 支援 FUSE 的參數可用 encfs -H 來查詢
louie
快樂的大學生
快樂的大學生
 
文章: 593
註冊時間: 週一 9月 09, 2002 7:58 pm

回到 share

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客