在 Linux 下,是否可以加密文件夹/分区,使得没有密码的任何人都无法访问?

在 Linux 下,是否可以加密文件夹/分区,使得没有密码的任何人都无法访问?

我正在研究我拥有的不同替代方案(例如 ext4 加密),但我思考所有这些都容易受到 root 攻击,只需进入我的家庭帐户并查看其中存储的内容,当有人控制了计算机时,这真的很容易做到。

我正在寻找一种方法,使我的文件无法访问,即使对于 root 用户,即使有人使用裸机也是如此。如果我忘记了密钥,我愿意冒丢失数据的风险,这不是问题,这实际上是可取的。

答案1

  • eCryptFS 可以加密您的主文件夹(及子文件夹),并使用您的登录密码自动解密 - root 不能直接更改您的密码,它需要您的实际登录密码。该ecryptfs-migrate-home脚本/工具可以加密现有主文件夹,或者许多发行版可以在创建新用户时加密主文件夹。它适用于大多数发行版、Debian、Mint 和 Ubuntu 衍生版、Arch、Gentoo 等。并且可以自由扩展其大小。

    或者,它也可以只使用一个加密的“私人”文件夹,ecryptfs-setup-private

  • EncFS 也加密文件夹,但可能需要更多定制才能实现安全的自动解密。

  • LUKS 或普通的 dm-crypt 使用固定大小的容器文件或设备,不像上述基于文件的解决方案那样容易扩展,但它也不会透露太多信息(文件编号和大致大小)

  • TrueCrypt 及其衍生产品的工作原理与 LUKS 类似

  • 许多发行版还可以安装“全盘加密”(通常使用 LUKS 和 LVM),这需要在启动时输入正确的密码。对于不需要自行重新启动的单用户(“个人”)计算机来说,这是一个很好的解决方案,但在多用户计算机上,它也会对其他每个用户“解密”。

答案2

您可以使用 dm-crypt 来实现这一点。您需要创建一个空文件,该文件将用作存储设备。您可以使用 dd 或 fallocate 等命令创建一个具有特定大小的文件:

fallocate -l 512M /home/user/cryptedDevice` 
dd if=/dev/zero of=/home/user/cryptedDevice bs=1M count=512

这将在您的主目录中创建一个名为 cryptedDevice 的 512 MB 文件。然后您可以在该文件上设置 luks。cryptsetup -y luksFormat /home/user/cryptedDevice使用 Luks,您可以轻松更改容器的大小等。

要打开加密文件,您可以执行以下操作:cryptsetup luksOpen /home/user/cryptedDevice someDeviceName

然后您需要用文件系统格式化该分区:mkfs.ext4 -j /dev/mapper/someDeviceName

之后您只需将该设备安装到文件夹即可:mount /dev/mapper/someDeviceName /mnt/

参考 digitalocean

答案3

运行时请注意:

cryptsetup -y luksFormat /home/user/cryptedDevice

你收到此错误:

"Not compatible PBKDF options"

使用 --type luks1 运行

cryptsetup -y luksFormat /home/user/cryptedDevice --type luks1

参考: https://github.com/latchset/luksmeta/pull/10

相关内容