把你的密码放在加密设备上

来源:互联网 发布:世界贸易进出口数据 编辑:程序博客网 时间:2024/05/06 12:26

时间久远,我都忘了原理是什么了。 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=~/secretDEVICE=secretMOUNT=~/mntLOOP=/dev/loop0usage (){    echo "Usage:  `basename $0` <on>|<off>"}if [ $# -lt 1 ]; then    usage    exit 1ficase $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


注意, 在加密设备挂载期间, 它的内容是可见的。  因此要注意挂载点的权限,如果此时系统里有另外一个用户,如果挂载点有被他可读的权限, 他可以看到文件的内容! 要把挂载点设成只对本人可读、可写、可执行。 


原创粉丝点击