Chinaunix首页 | 论坛 | 博客
  • 博客访问: 102130724
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-04-26 18:19:44

作者: Ben Martin/黄永兵 译 出处:51CTO.com
 
 
我将设置一个64MB的加密文件系统,将它挂载在我的home目录,使用XFS文件系统,因为常规用户不能指定其他另外一个cmtab文件路径,我们将编辑全局/etc/cryptmount/cmtab并将我们的cryptmount信息放在那儿。--generate-key选项指定请求的密钥大小(单位字节),在这个例子中,我想一个256位(32字节)长度的密钥,这与/proc/crypto中的最小最大密钥长度成比例的。你必须使用一个/proc/crypto中报告的范围内的一个值。--prepare选项将用cryptmount为文件系统设置好所有设备映射文件但不真实地挂载,我们稍后将要谈到,因此我们可以在设备映射文件上创建一个文件系统。正如我们上面看到的一样,调用--release将让cryptmount释放文件系统资源和设备映射文件,让我们从下一行开始用cryptmount挂载(自己创建的)文件系统,仍然以root登陆,我们修改root目录的保护,允许ben用户读取和写入以及卸载,到此,ben用户能自由地挂载,卸载,以及与加密文件系统进行交互。 

$ 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

阅读(288) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~