分类: LINUX
2008-04-26 18:19:44
$ dd if=/dev/zero of=~/myencfs.fs bs=1M count=64 $ mkdir -p ~/myencfs $ su -l # vi /etc/cryptmount/cmtab ... home-ben-myencfs { dev=/home/ben/myencfs.fs dir=/home/ben/myencfs fstype=xfs fsoptions=noatime keyfile=/home/ben/myencfs.key flags=user,nofsck } ... # cryptmount --generate-key 32 home-ben-myencfs # cryptmount --prepare home-ben-myencfs # mkfs.xfs /dev/mapper/home-ben-myencfs # cryptmount --release home-ben-myencfs # cryptmount home-ben-myencfs # chown ben.root myencfs # chmod 700 myencfs # cryptmount -u home-ben-myencfs # exit $ cd ~ $ cryptmount home-ben-myencfs $ df ./myencfs Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/home-ben-myencfs 60736 3436 57300 6% /home/ben/myencfs $ cd ~/myencfs $ cp /tmp/linux-2.6.23.tar.bz2 . $ ls -l -rw-r----- 1 ben ben 45488158 2008-02-01 21:08 linux-2.6.23.tar.bz2 |
磁盘交互空间中的内容在进出时不需要保留,因此我们可以使用随机数据作为密钥来保护交换文件,每次交换文件再次挂载时,脚本选择一个新的随机密钥并用mkswap重新创建交换文件,这可以避免为交换文件记忆一个密语,随机密钥导致我们不能恢复已经卸载了交换文件内容,但是我们也没有兴趣那么做,因此我们可以使用/dev/radom文件作为我们的密钥。
下面的代码片段就创建一个加密的交换文件(/var/swapfile),在本例中它只有32MB,但是如果dd命令被修改为创建一个16GB的文件,那么剩下的命令将创建一个巨大的加密交换文件。
# dd if=/dev/zero of=/var/swapfile bs=1M count=32 # vi /etc/cryptmount/cmtab ... swapfile { dev=/var/swapfile fstype=swap flags=mkswap cipher=twofish keyfile=/dev/random keymaxlen=16 keyformat=raw } ... # free -m ... Swap: 0 0 0 /usr/bin/cryptmount --swapon swapfile # free -m ... Swap: 31 0 31 # /usr/bin/cryptmount --swapoff swapfile |