-4

我将如何使用 Python 或 bash 脚本执行此操作:

admin_pass ="admin pass"
drive_password = "password"
auto_mount_path = "/dev/sdc1"
mount_point = "backups1"

sudo cryptsetup luksOpen auto_mount_path mount_point
admin_pass
drive_password

我希望脚本安装加密驱动器,而无需用户输入密码或管理员密码。

bash或Python有可能吗?

谢谢

4

1 回答 1

0

你不需要脚本!您拥有系统中的所有内容。你说你的系统驱动器也是加密的,所以我们可以把我们的文件放在那里,而不会冒着你的存储驱动器的密码被泄露的风险。

我记得几年前我也用密码来做到这一点。但更简单的方法是使用密钥文件,这样您的 LUKS 文件中还有第二个密钥槽作为备份,以便在您忘记密码时能够打开加密存储。

简而言之:您将需要终端,例如以 root 权限打开的 Leafpad,您需要 10 分钟的时间(对于初学者来说可能需要几分钟)以及以下说明:

所有选择的名称(密钥文件、解密的驱动器名称、挂载点)都可以自己定义。它们只是了解名称放置位置的示例。

要设置唯一的密钥文件,请使用终端

~$ sudo -i
~# dd if=/dev/urandom of=/root/storage.keyfile bs=8 count=256
~# chown root:root /root/storage.keyfile
~# chmod 000 /root/storage.keyfile

让终端保持打开状态。还有更多工作要做... 现在我们将此密钥文件放入加密存储驱动器的空闲密钥槽中。首先查找您的存储驱动器。

~# lsblk -f

假设您的存储驱动器/dev/sdc1与您在脚本中引用的一样。

~#cryptsetup -v luksAddKey /dev/sdc1 /root/storage.keyfile

您必须输入密码才能让 cryptseptup 进行添加。

然后,您使用具有 root 权限的 Leafpad(或类似设备)打开,/etc/crypttab以便能够读取和写入 - 从您的终端将驱动器的 UUID 复制到 Leafpad(或类似设备)也会更容易。我们将使用您的存储驱动器的 UUID 作为其唯一 ID,因为您的系统可能会在引导期间更改驱动器的位置,然后您的自动化过程将无法在旧路径下找到它。

~# lsblk -f应该找到. _ /dev/sdc1它看起来像5f2add0f-d41e-250e-acc7-38512658a26d

标记UUID并复制它。第一个条目/etc/crypttab是您打开的存储驱动器的名称。您可以根据需要选择它,但没有空格或特殊字符。把事情简单化。

之后是带有UUID的路径。然后是密钥文件和选项。你/etc/crypttab最终应该是这样的:

backups1-SSD   /dev/disk/by-uuid/5f2add0f-d41e-250e-acc7-38512658a26d   /root/storage.keyfile   luks

你可以保存/etc/crypttab现在。

/etc/fstab然后你像使用crypttab一样打开,你几乎完成了。

将另一条线放入其中。对于您打开的存储驱动器的挂载点,我使用与您的脚本示例相同的内容,假设该文件夹将位于您的主驱动器中并且您的驱动器是ext4。您的新行/etc/fstab应如下所示:

/dev/mapper/backups1-SSD   /home/Emily/backups1   ext4   defaults   0 0

保存文件,您就完成了。您可以关闭终端和leafpad。

您现在可以重新启动系统以测试自动化过程。登录后,您应该会发现您的加密存储驱动器已打开并安装在/home/Emily/backups1.

对于新手:关闭计算机时无需关闭打开的驱动器。你的系统会为你做这件事。

于 2021-06-04T17:12:45.907 回答