Bug#768314: systemd: encrypted disk passphrase prompt nearly unusable without plymouth
Maximilian Gaukler
development at maxgaukler.de
Mon Feb 9 23:46:12 GMT 2015
found 768314 systemd/215-10
fixed 768314 systemd/218-8
retitle 768314 systemd: encrypted disk passphrase prompt nearly unusable
without plymouth
severity important 768314
thanks
Hi everyone,
after half a day of testing and reproducing I would like to summarize
this bug and add my own explanation:
Summary:
The way in which systemd queries for cryptsetup passwords is badly
usable in multiple ways. There are two main problems:
- Other output is not suppressed, which may overwrite or hide the
password prompt (except when plymouth io multiplexing is active)
- a 90 second startup timeout kills the password prompt after inactivity
For one disk, this is a slight usability problem. For multiple encrypted
volumes with longer passwords, it is a nightmare that makes using the
system annoying or impossible, often dropping to a rescue shell.
Steps to reproduce it without any special hardware:
- setup a simple debian jessie installation, unencrypted root+swap, no
LVM or fancy stuff
(e.g. in virtualbox, use snapshots for quickly rolling back after
testing something)
- apt-get install cryptsetup
- run the attached reproducer script as root. It sets up 3 crypto disks
from loopback files.
- reboot
test scenarios:
a) try to enter the password - it is "test" for each of the 3 disks
-> If you enter your password correctly, it works most of the time.
screen shot is attached, please note that the last two password prompts
are immediately overwritten by other messages.
b) just press enter randomly instead of typing a password
-> even the next password prompts will not be visible, but overwritten
by other messages!
c) just wait for >90sec
-> an emergency shell will be started and stopped, mixed with some
password prompts and "A start job is running for..."
-> if you wait even longer, the system will perform a weird dance
between "Give root password" and "Please enter passphrase for disk".
Test results:
Possible solutions and workarounds:
a) installing plymouth *and* enabling it by adding "splash" to the
default kernel commandline.
Just installing plymouth will not help here due to bug #768329 in
plymouth. If this were fixed we could add a dependency (recommends?) for
plymouth to systemd/jessie or cryptsetup/jessie as a dirty workaround.
b) systemd 218-8 from experimental
solves the underlying problems good enough so that I consider the bug as
fixed there:
- suppressing unnecessary output
- not having a timeout on password entry
For comparison, two screenshots are attached. In both I entered the
first two passwords and then made a screenshot at the password prompt
for the third disk. found-*.png is the problematic systemd version
currently in jessie, notfound-*.png the one in experimental.
Thanks
Max
-----
(Since I am not very familiar with the debian bug tracking system,
please remind me if I do something wrong.)
-------------- next part --------------
#!/bin/bash
set -e
echo -n test > /root/cryptPassphrase
num_disks=3
for i in `seq 1 $num_disks`; do
echo "cryptTest$i /root/cryptTest$i none luks" >> /etc/crypttab
echo "/dev/mapper/cryptTest$i /mnt/cryptTest$i ext4 defaults 0 0" >> /etc/fstab
mkdir -p /mnt/cryptTest$i
fallocate /root/cryptTest$i -l 42M
cryptsetup --batch-mode luksFormat /root/cryptTest$i /root/cryptPassphrase
cryptsetup luksOpen /root/cryptTest$i cryptTest$i --key-file=/root/cryptPassphrase
mkfs.ext3 /dev/mapper/cryptTest$i
cryptsetup luksClose cryptTest$i
done
echo "now reboot. The crypto password is: test"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: found-systemd-215-10.png
Type: image/png
Size: 16405 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-systemd-maintainers/attachments/20150210/b7b94cb6/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: notfound-systemd-218-8.png
Type: image/png
Size: 9571 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-systemd-maintainers/attachments/20150210/b7b94cb6/attachment-0003.png>
More information about the Pkg-systemd-maintainers
mailing list