Когда оболочка запускается со стандартным вводом, подключенным к чему-то другому, кроме терминала, она считывает команды из стандартного ввода и выполняет их до тех пор, пока стандартный ввод не будет закрыт.
Когда вы бежите
sudo -Siu newuser < password.txt
Стандартный ввод
sudo
читается из password.txt
; sudo
не изменяет это перед запуском оболочки, поэтому оболочка также читает из password.txt
. Тогда могут произойти две вещи, :если sudo
нужен пароль, он его прочитает, и оболочка немедленно дойдет до конца файла (, предполагая, что в нем больше ничего нет ), и завершит работу; в противном случае оболочка попытается разобрать пароль и выполнить его...
Я не уверен, что есть надежный способ обойти это, и в любом случае двойная обработка означает, что вы, вероятно, не захотите (если вы не отключили токены ). Вы можете подготовить токен перед запуском оболочки, как описано в ответе Элии Кагана , если вы не отключили токены.
Из разделаman cryptsetup
(luksFormat):
ПРЕДУПРЕЖДЕНИЕ :Выполнение luksFormat для существующего контейнера LUKS сделает все данные старого контейнера безвозвратно невосстановимыми, если только у вас нет резервной копии заголовка.
Думаю, у вас нет резервной копии заголовка, и поэтому ваши данные останутся в истории.
Извините за плохие новости.
Тем не менее, hexdump: /dev/md0: Input/output error
указывает на проблему с одним из дисков!!