Solicitar senha durante a inicialização com o serviço systemd

16

Isso é relevante para o Arch Linux (e talvez outras distribuições usando systemd ). Eu quero montar uma partição TrueCrypt na inicialização. Com o antigo sysvinit , isso foi bastante simples com um script chamado por rc.local .

Cheguei à minha conta ao sequestrar um tópico no fórum do Arch . Há outro tópico , onde este thread do systemd-devel é falado como" tendo a solução ", no entanto não é aparente para mim o que realmente é, e o OP tem o último post afirmando que ele não foi capaz de realizar seu objetivo.

Pelo que parece essa pessoa está fazendo isso, mas estava procurando uma maneira de transformar mensagens de inicialização contínua enquanto ele digita a senha. Eu postei lá também pedindo para ele postar seu arquivo .service real.

Ao pesquisar bastante, as pessoas mencionam que tiveram sucesso ou que é possível, mas não explicam exatamente qual foi a solução.

Eu sou capaz de desbloquear a partição a partir da linha de comando através de um systemd service (que por sua vez me dá a habilidade de desmontá-la automaticamente no shutdown / reboot), mas eu tenho que fazê-lo manualmente uma vez logado. Eu realmente gostaria que o processo de inicialização fizesse uma pausa e me pedisse a senha.

Este é o meu script atual:

[Unit]
Description=Truecrypt Setup for vault
#DefaultDependencies=no
#Conflicts=umount.target
#Before=umount.target
#After=systemd-readahead-collect.service systemd-readahead-replay.service
#After=cryptsetup.target

[Service]
Type=oneshot
RemainAfterExit=yes
#StandardInput=tty-force
ExecStart=/bin/sh -c '/usr/bin/truecrypt -t --protect-hidden=no -k "" --filesystem=none --slot=1 -p 'systemd-ask-password "Enter password for truecrypt volume: "' /dev/sda4'
ExecStop=/usr/bin/truecrypt --filesystem=none -d /dev/sda4

[Install]
WantedBy=multi-user.target

Deixei o material comentado em [Unit] , pois em algum momento encontrei sugestões de que deveria estar lá, mas tive problemas com ele. O acima parece funcionar muito bem após a inicialização / login ... apenas não durante.

    
por Hendy 31.05.2013 / 14:53

2 respostas

2

  • Escreva um script de wrapper e coloque-o em ExecStart=
  • No script wrapper, use systemd-ask-password <PROMPT> , leia a senha do seu stdout e alimente-a para TrueCrypt da maneira que for necessária
  • Não se esqueça de exec truecrypt do final do seu script para não deixar um processo extra por volta

Isso fará com que o systemd consulte a senha imediatamente (se você iniciar o apache usando o systemctl) ou usando um dos chamados agentes (existem os padrões que pedem senhas usando wall ou diretamente no console durante a inicialização do sistema). Essa é a melhor coisa que você pode fazer para ficar em conformidade.

    
por 28.12.2014 / 00:10
0

Encontrei este post no Unix StackExchange: rc.local com leitura não ecoará traços chave
Eu acho que você poderia tentar a solução usada

    
por 20.12.2013 / 13:19