把你的密碼放在加密設備上

時間久遠,我都忘了原理是什麼了。 Linux 太過穩定, 有的事情做過一遍,很難有機會再做第二遍。  我只記錄了操作。 


首先安裝 cryptsetup 包, 我用的是Debian, 因此用

apt-get install cryptsetup

安裝。  我猜想RPM系統的Linux,應該也有類似包吧。 


然後做一個加密的塊設備,名爲testfile,大小爲10M:

dd if=/dev/urandom of=testfile bs=1M count=10
sudo losetup /dev/loop/0 testfile
sudo cryptsetup luksFormat /dev/loop/0
(enter the passphrase)

cryptsetup luksOpen /dev/loop/0 testfs


請牢記你輸入的passphrase, 以後就靠它解密該設備了。 然後在塊設備上創建文件系統:

mke2fs /dev/mapper/testfs


接下來就可以掛載設備了:

mount /dev/mapper/testfs /mnt/test

cp ~/my_secret.txt  /mnt/test

掛載點是 /mnt/test , 然後你就可以往該目錄寫文件了。  文件其實上會寫到 testfile 這個文件上去。  卸載之後, testfile 是加密的。 


這是第一次操作,比較複雜些。  以後有了這個testfile文件, 無非就是寫文件前mount 設備:

sudo modprobe dm_crypt
sudo losetup /dev/loop/0 testfile
sudo cryptsetup luksOpen /dev/loop/0 testfs
sudo mount /dev/mapper/testfs ~/aaa


編輯文件或複製文件:

vi ~aaa/my_secret.txt

cp certificate  ~/aaa


操作完後, umount 設備:

sudo umount ~/aaa
sudo cryptsetup luksClose /dev/mapper/testfs
sudo losetup -d /dev/loop/0


testfile 看上去就是一個10M大小的文件,內容是看不出來的。 

file testfile 
testfile: LUKS encrypted file, ver 1 [aes, cbc-essiv:sha256, sha1] UUID: 12815c58-43ee-4b65-b0db-c1387c9


 爲了方便使用, 我寫了一個腳本, 用法是 encrypt.sh on 就是掛載,輸入創建設備時的passphrase; encrypt.sh off 就是卸載。 請根據需要修改其中的FILE, DEVICE, MOUNT變量。 

#! /bin/sh

#
# convenient script to (un)mount an encrypted file
# Dai Yuwen,  June 16, 2007
#

FILE=~/secret
DEVICE=secret
MOUNT=~/mnt
LOOP=/dev/loop0

usage ()
{
    echo "Usage:  `basename $0` <on>|<off>"
}

if [ $# -lt 1 ]; then
    usage
    exit 1
fi

case $1 in
    on)
        sudo losetup $LOOP $FILE && \
        sudo cryptsetup luksOpen $LOOP $DEVICE && \
        if sudo mount /dev/mapper/$DEVICE $MOUNT; then echo $FILE mounted on $MOUNT ; fi
        ;;
    off)
        sudo umount $MOUNT && \
        sudo cryptsetup luksClose /dev/mapper/$DEVICE && \
        sudo losetup -d $LOOP
        ;;
    *)
        usage
        exit 1
        ;;
esac


注意, 在加密設備掛載期間, 它的內容是可見的。  因此要注意掛載點的權限,如果此時系統裏有另外一個用戶,如果掛載點有被他可讀的權限, 他可以看到文件的內容! 要把掛載點設成只對本人可讀、可寫、可執行。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章