当前位置: 首页>>技术问答>>正文


我可以禁用full-disk加密吗?

, , ,

问题描述

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

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

最佳解决方案

如果Ubuntu在引导期间要求加密密码短语(即在显示登录屏幕之前在文本控制台上),则表示使用了完整的磁盘加密方法。 (有多种方法可以做到这一点,但我会保持答案一般。)加密由文件系统和物理硬盘驱动器之间的额外软件层处理,而不是文件系统本身。

没有简单的方法或工具来撤消这个。通过对Linux系统如何工作的一些了解,可以做到。您必须将整个文件系统(或所有文件)移动到另一个分区(具有足够的可用空间)或外部HDD。然后,删除加密容器,并重新创建文件系统而不加密。最后,确保在重新引导之前引导加载程序和mount -a正确识别新文件系统。

如果可能,最好避免这种耗时和error-prone程序。只需重新安装即可。对于新用户,这是最快捷,最安全的选择。

PS:您可以更改加密密码,可能更改为空字符串。然后解密只需按Enter键。也许你可以进一步向supress(现在没用)密码短语提示。但是,这不会禁用加密。数据仍将被加密,尽管加密将是无用的,因为密钥可以被轻易猜到。

次佳解决方案

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

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

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

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

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

从Live CD启动。我使用过Ubuntu 13.10 32bit桌面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结果状态ping每秒dd进程:

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

监测DD的替代方案

如果你不喜欢上面的’while method’,你可以使用 watch 。打开不同的终端窗口并获取PID:

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

替换为您的进程ID:

watch kill -USR1 <pid>

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

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

完成后,您可以挂载non-encrpyted分区以查看它是否正常:

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 + HDD准备几个小时等待。您可能希望在分区之前创建交换,而不是移动/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。但是,对你来说不应该是这种情况。请记住,上述说明可能会删除您的数据,因此在进行操作之前,请小心并进行备份。

万一你遇到内核问题(chrooted和/boot mount):

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

当然用来自uname的内核日期替换linux-image-3.X.Y-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

祝好运

第三种解决方案

如果保持加密是可以的,但是要关闭密码短语提示,更简单的方法是设置一个简单的密码,如”password”,然后以明文形式在initramfs中保存这个简单的密码。 Disable the LUKS encryption password

本质上,添加一个钩子脚本,然后将”keyscript”添加到initramfs。通常这些脚本用于通过Bletooth,USB memory 棒等获取密码,但在这种情况下,只需将其打印为普通密码即可。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2121.html,未经允许,请勿转载。