Zze*_*dor 53 filesystem encryption luks
我最近安装了 Ubuntu 12.10,它需要密码才能启动(我用加密的文件系统安装了它)。
我是否必须重新安装才能更改为标准的未加密文件系统?
Jan*_*Jan 29
如果 Ubuntu 在引导期间(即在显示登录屏幕之前在文本控制台上)要求加密密码,这表明使用了全盘加密方法。(有不止一种方法可以做到这一点,但我会保留答案。)加密由文件系统和物理硬盘驱动器之间的额外软件层处理,而不是文件系统本身。
没有简单的方法或工具可以撤消此操作。有了一些关于 Linux 系统如何工作的知识,就可以做到。您必须将整个文件系统(或所有文件)移动到另一个分区(有足够的可用空间)或外部硬盘驱动器。然后,删除加密的容器,并重新创建未加密的文件系统。最后,确保引导加载程序正确识别新文件系统,mount -a然后再重新启动。
如果可能,最好避免这种耗时且容易出错的过程。只需进行全新安装。对于新用户来说,这是最快和最安全的选择。
PS:您可以更改加密密码短语,可能更改为空字符串。然后解密只需要按回车。也许您可以进一步抑制(现在无用)密码提示。但是,这不会禁用加密。数据仍然会被加密,尽管加密将毫无用处,因为密钥可以被轻易猜到。
Nev*_*eue 24
下面是我的解决方案。请记住,我不是 Linux 专家,因此它可能不是最佳解决方案。反正找不到更好的了。
注意:每当我说,我的意思是
/dev/sda1 - boot partition
/dev/sda5 - encrypted partition
/dev/sda3 - clean non-encrypted EXT4 partition
/dev/sda2 - my newly created swap partition
Run Code Online (Sandbox Code Playgroud)
从 Live CD 启动。我使用过 Ubuntu 13.10 32 位桌面 ISO。
挂载你的分区:
sudo cryptsetup luksOpen /dev/sda5 crypt1
Run Code Online (Sandbox Code Playgroud)
将源数据复制到目标分区并将 dd PID 保存到 pid 变量:
sudo dd if=/dev/ubuntu-vg/root of=/dev/sda3 bs=1M & pid=$!
Run Code Online (Sandbox Code Playgroud)
这将使用 USR1 信号和 dd 结果状态每秒 ping 一次 dd 进程:
while sudo kill -USR $pid; do sleep 1; done
Run Code Online (Sandbox Code Playgroud)
如果你不喜欢上面的“while 方法”,你可以使用 watch。打开不同的终端窗口并获取PID:
pgrep -l '^dd$' | awk '{ print $1 }'
Run Code Online (Sandbox Code Playgroud)
替换为您的进程 ID:
watch kill -USR1 <pid>
Run Code Online (Sandbox Code Playgroud)
您应该每 2 秒在 dd 终端中看到输出。
完成后,您可以挂载未加密的分区以查看是否正常:
sudo mount /dev/sda3 /mnt
Run Code Online (Sandbox Code Playgroud)
之后卸载您的分区:
sudo umount /dev/sda3
Run Code Online (Sandbox Code Playgroud)
释放crypt分区:
sudo cryptsetup luksClose /dev/sda5
Run Code Online (Sandbox Code Playgroud)
运行 gparted。删除您的 LUKS 分区(扩展分区和逻辑分区)。调整 /dev/sda3 的大小并向左移动。创建交换分区。
注意:向左移动 /dev/sda3 可能需要很长时间。对我来说,在 120GB 分区和 SSD 驱动器上花了 30 分钟。如果您有 500GB 以上的硬盘,请准备好等待几个小时。您可能希望在分区之前创建交换区,而不是移动 /dev/sda3。
在您的交换分区上创建一个新的交换文件系统:
sudo mkswap /dev/sda2
Run Code Online (Sandbox Code Playgroud)
并将 UUID 存储在某处。
获取您的根分区 UUID:
sudo blkid /dev/sda3
Run Code Online (Sandbox Code Playgroud)
编辑 fstab:
sudo nano /etc/fstab
Run Code Online (Sandbox Code Playgroud)
删除或注释掉overlayfs 和tmpfs 行。
添加用 blkid 结果替换的行:
UUID=<uuid_root> / ext4 errors=remount-ro 0 1
UUID=<uuid_swap> none swap sw 0 0
Run Code Online (Sandbox Code Playgroud)
删除文件:
rm /etc/crypttab
Run Code Online (Sandbox Code Playgroud)
更新您的 initramfs 以避免诸如“cryptsetup: evms_activate is not available”之类的错误:
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
Run Code Online (Sandbox Code Playgroud)
它对我有用,但是有可能逐步执行上述操作可能对您不起作用。在我弄清楚 update-initramfs 方法之前,我重新安装了几次内核,同时也在修改 grub。但是,这不应该是您的情况。请记住,上面的指令可能会删除你的数据,所以要小心,并备份,之前诉讼中。
以防万一你有内核问题(chrooted 和 /boot 挂载):
uname -r
sudo apt-get install --reinstall linux-image-3.X.Y-ZZ-generic
Run Code Online (Sandbox Code Playgroud)
当然,将 linux-image-3.XY-ZZ 替换为来自 uname 的内核日期。
或 GRUB(在 chroot 之外):
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && (boot-repair &)
Run Code Online (Sandbox Code Playgroud)
更多详情:https : //help.ubuntu.com/community/Boot-Repair
祝你好运
小智 11
如果可以保留加密,但要关闭密码提示,一个更简单的方法是设置一个简单的密码,例如“password”,然后将该密码以明文形式保存在 initramfs 中。禁用 LUKS 加密密码。
本质上,添加一个钩子脚本,它反过来向 initramfs 添加“keyscript”。通常这些脚本用于通过 Bletooth、USB 记忆棒等获取密码,但在这种情况下,只需打印简单的密码即可。
实际上可以毫不费力地就地解密分区。例如,请参阅此处的说明,这些说明通常对于 Ubuntu 和 Arch 都同样有效。就我而言,我有一个 LUKS1 设备,这显然使事情变得更容易。我所要做的就是这样:
sudo cryptsetup-reencrypt --decrypt <device_path>。就是这样。对于 250 GB SSD,需要 20 分钟。我不需要对/etc/fstabgrub 或 initramfs 做任何特殊的事情。我注释掉了 中的相关(唯一)行/etc/crypttab,但我什至认为这是没有必要的。
也就是说,我有第二台配备 500 GB SSD 的机器,大约 3 小时后,它仍然声称还需要 90 分钟,而且速度只会越来越慢,所以我放弃了,只是重新刷新了驱动器。
不过,在执行任何操作之前,我建议备份(解密的)分区。按照另一个答案中的描述使用 dd非常棒。我是在重新启动进入实时 USB 环境之前安装分区时执行此操作的。这对于我最终重新刷新的分区非常有用,因为我能够重新安装备份并复制我非常关心的任何内容。
| 归档时间: |
|
| 查看次数: |
179140 次 |
| 最近记录: |