我可以禁用全盘加密吗?


41

我最近安装了Ubuntu 12.10,它需要一个密码来启动(我使用加密的文件系统安装了它)。

是否需要重新安装才能更改为标准的未加密文件系统?


您是对整个Ubuntu安装进行加密还是对您的主目录进行了加密?
Flimm

我在安装过程中进行了加密,因此我猜测是整个安装过程。
Zzealdor

3
我是新用户,所以我不确定这些东西在Linux中如何工作(这完全使Microsoft受够了!)
Zzealdor

@Rinzwind可能不是。此方法(ecryptfs)加密主目录,不需要额外的密码;使用登录密码。
1

1
@ user163872:在旧计算机(例如上网本)上,新的Ubuntu版本(12和13)非常慢。您应该安装Lubuntu,它是为提高速度而设计的,即使在内存较低(即512MB)的情况下,也可以在较早/较慢的计算机上非常快速地运行。Lubuntu与普通的Ubuntu几乎相同-只有桌面/菜单略有不同。但是所有可以在普通Ubuntu上运行的东西都可以在Lubuntu中运行。
lara 2014年

Answers:


22

如果Ubuntu在引导过程中(例如在显示登录屏幕之前在文本控制台上)要求输入加密密码短语,则表明已使用全盘加密方法。(执行此操作的方法不止一种,但我会保留一般的答案。)加密由文件系统和物理硬盘驱动器之间的额外软件层处理,而不是由文件系统本身处理。

没有简单的方法或工具可以撤销此操作。有了一些有关Linux系统如何工作的知识,就可以完成。您必须将整个文件系统(或所有文件)移动到另一个分区(具有足够的可用空间)或外部HDD。然后,删除加密的容器,然后重新创建不加密的文件系统。最后,mount -a在重新引导之前,请确保引导加载程序正确识别了新文件系统。

如果可能,最好避免这种耗时且容易出错的过程。只需重新安装即可。对于新用户,这是最快,最安全的选择。

PS:您可以更改加密密码短语,可能更改为空字符串。然后解密仅需按Enter。也许您可以走得更远,禁止使用(现在已无用)密码短语提示。但是,这不会禁用加密。尽管加密将是无用的,但由于可以轻易猜出密钥,因此数据仍将被加密。


3
从理论上讲,您是否应该不能执行“ dd if = / dev / mapper / sda5_crypt of = / dev / sda5 bs = 32M”之类的操作?
罗伊(Roy)

@Roy,我认为只有在满足以下条件时才能工作:1. dd并且底层驱动程序只有在完成读取每个块之后才进行写入(可能有标志和设置来确保这一点)2.读取/写入块不与加密块的边缘重叠(可以检查,可能涉及一些数学运算)3.解密所需的重要标头信息在完成之前不会被覆盖(检查基础加密格式,也许是从头到尾的过程)。我认为可以,但是需要更仔细的设置和分析。
FuzzyTew13年

20

下面是我的解决方案。请记住,我不是Linux专家,因此它可能不是最佳解决方案。无论如何找不到更好的。

将FDE安装迁移到未加密的分区

注意:每当我说时,我的意思是

/dev/sda1 - boot partition
/dev/sda5 - encrypted partition
/dev/sda3 - clean non-encrypted EXT4 partition
/dev/sda2 - my newly created swap partition

从加密的根文件系统复制数据

从实时CD引导。我使用过Ubuntu 13.10 32位桌面ISO。

挂载您的分区:

sudo cryptsetup luksOpen /dev/sda5 crypt1

将源数据复制到目标分区,并将dd PID保存到pid变量:

sudo dd if=/dev/ubuntu-vg/root of=/dev/sda3 bs=1M & pid=$!

这将使用USR1信号和dd结果状态每秒对dd进程执行ping操作:

while sudo kill -USR $pid; do sleep 1; done

监控DD的替代方法

如果您不喜欢上面的“ while方法”,则可以使用watch。打开其他终端窗口并获取PID:

pgrep -l '^dd$' | awk '{ print $1 }'

替换为您的进程ID:

watch kill -USR1 <pid>

您应该每2s在dd终端中看到一次输出。

配置新的根文件系统和分区

完成后,您可以挂载未加密的分区以查看是否可以:

sudo mount /dev/sda3 /mnt

之后卸载分区:

sudo umount /dev/sda3

发布crypt分区:

sudo cryptsetup luksClose /dev/sda5

运行gparted。删除您的LUKS分区(扩展的和逻辑的)。调整/ dev / sda3的大小,然后向左移动。创建交换分区。

注意:向左移动/ dev / sda3可能会花费很长时间。对我来说,在120GB分区和SSD驱动器上花费了30分钟。如果您有500GB +硬盘,请准备几个小时。您可能要在分区之前创建交换,而不是移动/ dev / sda3。

在交换分区上创建一个新的交换文件系统:

sudo mkswap /dev/sda2 

并将UUID存储在某处。

获取您的根分区UUID:

sudo blkid /dev/sda3

编辑fstab:

sudo nano /etc/fstab

删除或注释掉overlayfs和tmpfs行。

添加以blkid结果替换的行:

UUID=<uuid_root> /  ext4 errors=remount-ro 0 1
UUID=<uuid_swap> none swap sw 0 0

删除文件:

rm /etc/crypttab

更新您的initramfs以避免出现类似“ cryptsetup:evms_activate不可用”的错误:

sudo -i
mount /dev/sda3 /mnt
mount -t proc none /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev
mount /dev/sda1 /mnt/boot
chroot /mnt /bin/bash
apt-get remove --purge cryptsetup
update-initramfs -u -k all

最后说明和故障排除

它对我有用,但是有可能一步一步做对您可能不起作用。在我弄清update-initramfs方法之前,我要重新安装内核几次,而且还在修改grub。但是,这对您而言并非如此。请记住,上面的指令可能会删除你的数据,所以要小心,并备份之前诉讼中。

以防万一您遇到内核故障(chroot和/ boot挂载):

uname -r
sudo apt-get install --reinstall linux-image-3.X.Y-ZZ-generic

当然用uname的内核日期替换linux-image-3.XY-ZZ。

或GRUB(在chroot之外):

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)

更多详细信息:https : //help.ubuntu.com/community/Boot-Repair

祝好运


1
我相信您必须/etc/initramfs-tools/conf.d/resume手动替换交换分区的UUID,并且我建议使用cp -a或复制文件系统内容,rsync -a因为这样做通常更快,并且对SSD更安全。
LiveWireBT 2014年

感谢您使我的阐述更加用户友好。我没有进行简历更改,也害怕使用cp或rsync,认为dd(从设备到设备的原始副本)是执行此类任务的适当工具。我在VM上执行此操作,但是映像放置在SSD上。您能否详细说明一下:“更安全的SSD”?
NeverEndingQueue 2014年

使用dd复制整个分区,即使是应该为空的块也是如此,这会导致对SSD的不必要写入(在某些情况下,甚至会损害几乎所有单元的写入性能)。几年前,我和其他一些人还发现,使用ddTRIM 复制并激活TRIM(EXT4丢弃选项)将导致TRIM删除它认为为空的块,并在几个小时后导致安装损坏。
LiveWireBT 2014年

首先,监视方法应该是USR1而不是USR。我知道这很明显,但是对于像我这样的新手来说可能是个问题;)
goodfellow

9

如果可以保留加密但可以关闭密码提示,则更简单的方法是只设置一个“ password”之类的小密码,然后将该小密码以明文形式保存在initramfs中。禁用LUKS加密密码

本质上,添加一个钩子脚本,这反过来又向initramfs添加了一个“ keyscript”。通常,这些脚本用于通过Bletooth从USB记忆棒等获取密码,但是在这种情况下,只需使其打印出琐碎的密码即可。

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.