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

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

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

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

我正在运行crunchbang linux 的两个版本,一个是 Debian Squeeze 存储库 6 月底快照的ubuntu 10.04.1衍生版本。ubuntu 9.04

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

(我尝试使用 和 进行标记encryptiondirectories但缺少创建标记的代表。)

答案1

您有机器的管理访问权限吗?人们可以使用加密的环回设备。例子:

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

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

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

答案2

看来您所追求的不是一种加密和解密目录的方法,而是一种透明地使用加密存储的方法。请注意,您提出的方案(具有实际的大规模解密和加密功能)并不是很安全:如果您不正常注销(电源故障、系统崩溃、笔记本电脑被盗...),它会使内容处于未加密状态;并且它会留下机密数据的痕迹,坚定的攻击者可以找到这些痕迹(已擦除文件中的数据仍然在磁盘上,只是很难找到)。

当前的Linux系统提供了多种方法来实现透明加密。您可以使用以下方法加密整个卷dm 密码或其替代方案之一。有多种工具可用于加密特定目录树,包括加密文件系统(在内核级别工作)和环境文件系统(它纯粹通过熔断器在用户区工作)。 (我提到的三个在 Debian lenny 中都可用,并且您的所有发行版都应该提供。)

libpam-mount您可以通过 PAM(程序包;ecryptfs 的推荐选项)或配置文件脚本(encfs 的推荐选项)设置要安装的加密目录。请注意,“忘记手动加密”并不存在问题,因为没有任何内容未加密地写入磁盘。

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

答案3

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

另一种选择可能是真密码。您可以创建一个容器获取您的数据并通过 shell 脚本对其进行加密/解密。

答案4

您还可以使用 ecryptfs,它是 Ubuntu 及其派生发行版的标准配置。这就是当安装过程询问您是否要加密您的主目录时所使用的内容(http://www.linuxjournal.com/article/9400)。 ecryptfs 的优点是您不需要单独的分区,也不需要环回安装的文件来使用它。

相关内容