如何通过命令行或脚本最好地加密和解密目录?


8

我在市集版本控制下有一个文本文件目录,并在每台计算机上保留一个副本(实际上是一个分支)。我想通过命令行对目录进行加密和解密。

理想情况下,我还可以在注销时运行脚本,以检查目录是否已加密,如果未加密,则无需用户干预。但是,我不希望该目录在登录时被解密。(我希望脚本能够防止忘记手动加密。这对于上网本尤其重要。)

我正在运行ubuntu 10.04.1两个版本的crunchbang linux,一个版本是ubuntu 9.04Debian Squeeze存储库的六月末快照之一。

做这个的最好方式是什么?

(我尝试用encryption和标记directories,但是缺少创建标记的代表。)

Answers:


5

您对机器具有管理权限吗?可以使用加密的回送设备。例:

为加密的fs创建一个容器文件:

dd if=/dev/urandom of=container bs=1024k count=100 

将容器文件绑定到环回设备0:

losetup container /dev/loop0

创建加密的设备(-y两次要求输入密码;行被分隔\):

cryptsetup -c serpent-xts-essiv:sha256 -b 512 \
   -y create container /dev/loop0 

在加密设备上创建ext2文件系统(可以使用任何东西):

mkfs.ext2 /dev/mapper/container

将加密的文件系统挂载到crypt目录:

mount /dev/mapper/container crypt

以供参考:

man cryptsetup && man losetup

另外,请阅读密码学的最佳实践,以获取有关选择要使用的密码和密钥长度的信息,等等。


4

看起来您所追求的不是加密和解密目录的方法,而是透明地使用加密存储的方法。请注意,您所建议的方案具有实际的大量解密和加密功能,因此并不十分安全:如果您未正常注销(电源故障,系统崩溃,笔记本电脑被盗...),它将无法进行加密。并且留下了确定的攻击者可以找到的机密数据的痕迹(已删除文件中的数据仍在磁盘上,很难找到)。

当前的Linux系统提供了几种实现透明加密的方法。您可以使用dm-crypt或其替代方法之一加密整个卷。有几种工具可用于加密特定的目录树,包括ecryptfs(在内核级别工作)和encfs(在保险丝上仅在用户区工作)。(我提到的三个在Debian lenny中可用,并且应该由您的所有发行版提供。)

您可以设置通过PAM(libpam-mount软件包; ecryptfs的推荐选项)或通过配置文件脚本(encfs的推荐选项)登录时要挂载的加密目录。请注意,“忘记手动加密”没有问题,因为没有任何内容未经加密就写入磁盘。

为了获得最佳保护,您不仅应该加密机密文件,还应该加密程序可能存储机密数据的其他位置。至少,您应该加密交换分区。其他/tmp值得一看的地方包括(最好通过解决tmpfs),/var/spool/cups如果您打印机密文档,以及在主目录中的每个应用程序文件,例如Web缓存/历史记录(例如~/.mozilla)。


3

使用gpgdir怎么?对于登录和注销,这应该是可编写脚本的。您还可以选择应该加密的子目录(例如,您可能希望文件.bash_rc保持解密状态)。

另一个选择可能是Truecrypt。您可以为数据创建一个容器,并通过外壳脚本对其进行加密/解密。


2

您还可以使用ecryptfs,这是Ubuntu及其衍生版本的标准配置。这是安装过程询问您是否要加密主目录时使用的方法(http://www.linuxjournal.com/article/9400)。ecryptfs的优点是您不需要单独的分区或环回安装的文件即可使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.