有没有办法加密不在Home
(/home/user/
)中但位于不同分区中的文件夹,以便只有我的用户可以访问/读取其中包含的文件?
或者,我想了解是否可以将完整的ext4
分区变成加密卷,并在用户登录时安装。
如果可能的话,我想在不重新安装 Ubuntu 的情况下进行更改。
我的电脑有(mount
输出):
/dev/sda1 on / type ext4 (rw,errors=remount-ro)
/dev/sda3 on /home type ext4 (rw)
/dev/sda4 on /home/igor/Personale type ext4 (rw)
sda4
是包含我想要保护的文件夹的分区。
答案1
当然可以。enfcs
例如,您可以使用 在任何地方创建加密文件夹。使用 安装 encfs sudo apt-get install encfs
。
mkdir /path/to/encrypted
mkdir /path/do/decrypted
encfs /path/to/encrypted /path/to/decrypted
第一次在给定的加密目录上运行时,encfs 将引导您设置密码和加密选项。
要卸载加密文件夹,请键入
fusermount -u /path/to/decrypted
要再次挂载加密目录,请输入用于加密它的相同命令:
encfs /path/to/encrypted /path/to/decrypted
请注意,加密与 Unix 权限(“只有我的用户可以访问...”)完全不同。简而言之,任何人,而且只有拥有凭据(加密目录的密码)的人才能解密它。这正是它的重点,因为任何能够物理访问您机器的人都可以成为 root,因此 — 任何用户,包括您,都可以成为 root。这就像使用实时 CD 启动计算机或取出驱动器并将其连接到另一个系统一样简单。
答案2
如果你想加密 /dev/sda4(挂载为 /home/igor/Personale 类型 ext4),那么 eCryptfs 是一个不错的选择(Ubuntu 加密主目录使用 ecryptfs)
无论如何,您不必重新安装。ecryptfs 灵活(您可以加密文件夹或分区)且易于使用,它位于当前文件系统(在您的情况下为 ext4)的顶层。基本上,您有一个分区/块设备,创建文件系统并挂载它,然后使用 ecryptfs 对其进行加密。
在您的例子中,它是 /dev/sda4,用于加密它 注意:尽管此过程会保留现有数据,但我强烈建议将其备份到不同的分区或外部硬盘。因为稍后我们需要将其复制回来以加密数据(现有数据不会被加密)。
脚步:
首先安装 ecryptfs-utils 包
sudo apt-get install ecryptfs-utils
将目标目录挂载为 ecryptfs (假设 /dev/sda4 已经挂载在 /home/igor/Personale 上)
mount -t ecryptfs /home/igor/Personale /home/igor/Personale
注意:系统将提示您输入密码、密码、密钥字节、纯文本传递(y/n)、文件名加密(y/n)。
完成。现有数据无论如何都不会被加密,您可以删除现有数据并从备份中复制(这就是我建议备份的原因,需要数据交换才能激活现有文件的加密)。使用 rsync 进行备份/恢复:
rsync -axHAX /backup /home/igor/Personale
顺便说一句:您可以使用 findmnt 或 mount 来查看加密分区,例如 /home/terry/topsecret 在 /home/terry/topsecret 上类型 ecryptfs (rw,ecryptfs_sig=633937dbcf1fef34,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
答案3
您还可以使用 LUKS 制作一个可以使用的加密容器。这具有更安全的附加效果,只有密码才能打开容器。以下是一个例子:
创建加密容器、循环和设备
dd if=/dev/urandom of=/mnt/sdcard/loop1.img bs=1M count=128
losetup /dev/block/loop1 /mnt/sdcard/loop1.img
cryptsetup -c aes-plain luksFormat /dev/block/loop1
cryptsetup luks打开/dev/block/loop1 cpt1
mkfs.ext2 /dev/mapper/cpt1
mkdir /mnt/sdcard/safe
挂载 /dev/mapper/cpt1 /mnt/sdcard/safe