我想开发一个脚本,当 cryptroot 要求用户解锁时,它会传递 LUKS 密码,而不是通过键盘传递。我尝试修改 cryptroot 脚本,但无法运行它。
如果能得到任何建议就太好了。谢谢。
答案1
答案2
Cryptsetup 有一个选项-d
或--keyfile
,并以破折号作为文件名,cryptsetup 从 stdin 读取(参见手册页)
通过这个,您可以将密码从环境变量传递给 cryptsetup:
echo $password | cryptsetup luksOpen /dev/sdXX cryptroot -d -
确切的语法取决于您的脚本。
如果这是一个好主意,那么从安全角度来看又是另一个问题......
答案3
这是我在 Python 中的做法
import os
import time
system_password = "admin"
pass = "password123"
key_file = "/root/key_file"
slot = 1
os.system("echo %s > %s" % (system_password, key_file))
cmd = "echo -n %s | /sbin/cryptsetup luksAddKey /dev/sdx --key-file %s --batch-mode --key-slot %s" % (pass, key_file, slot)
os.system(cmd)
删除密码
cmd = "echo -n %s | /sbin/cryptsetup luksRemoveKey /dev/sdx" % (pass)
os.system(cmd)
确保 echo 命令有-n
选项,只是为了确保换行符不包含在密码中。