Cryptmount

Bash, Perl, Python, Ruby, ...

Cryptmount

Messaggioda mirko.pagliai » 06/03/2012, 14:48

Sto scrivendo qualche riga di bash per chiedere la password per cryptmount tramite zenity. Purtroppo:
Codice: Seleziona tutto
mirko@mirko-laptop:~$ echo "miapassword" | cryptmount -a
Failed to turn off keyboard echoing on terminal
Failed to extract cipher key

(ovviamente lo stesso accade utilizzando zenity, ma con echo sono sicuro non dipende da questo)

Il dubbio è che la cosa possa essere dovuta direttamente a cryptmount, che non accetta input da pipeline. Qualcuno conferma?
Avatar utente
mirko.pagliai
Hero Member
Hero Member
 
Messaggi: 3100
Iscritto il: 15/03/2010, 23:46

Re: Cryptmount

Messaggioda HAL 9000 » 06/03/2012, 15:03

Utilizzo solo cryptsetup, più a basso livello e che richiede i privilegi di amministrazione (ma tanto mi serve per l'intero disco in fase di avvio, quindi... ), comunque dalla man page di cryptmount non dovresti specificare anche "--passwd-fd/-w 0"?

Ignoro però quale sia il comportamento del comando in presenza di più di un file system criptato.
Laptop, desktop: Debian GNU/Linux Squeeze (amd64, i386) + Openbox
Raspberry Pi: Raspbian "Wheezy" (armhf)
Avatar utente
HAL 9000
Sr. Member
Sr. Member
 
Messaggi: 293
Iscritto il: 10/08/2009, 10:01

Re: Cryptmount

Messaggioda mirko.pagliai » 06/03/2012, 15:10

Con cryptsetup funziona correttamente (la password passata tramite pipeline, dico), quindi potrei aggirare il problema utilizzando cryptsetup+sudo, ma:
1) preferisco usare il secondo (sudo) solo quando davvero indispensabile;
2) ormai devo capire qual è il problema.

Sì, ho visto quell'opzione, ma non capisco cosa sono i file descriptor (incredibile, sì, ma non mi erano mai capitati di mezzo) e non capisco come passare una stringa a un file descriptor.
Avatar utente
mirko.pagliai
Hero Member
Hero Member
 
Messaggi: 3100
Iscritto il: 15/03/2010, 23:46

Re: Cryptmount

Messaggioda mirko.pagliai » 06/03/2012, 15:26

Così funziona, anche se non ho capito benissimo quello che ho fatto :-D
Codice: Seleziona tutto
exec 3<<<"miapassword"
/usr/bin/cryptmount -m $NAME --passwd-fd 3

($NAME è ovviamente è da impostarsi)

Ora resta da capirsi come integrarci zenity.
Avatar utente
mirko.pagliai
Hero Member
Hero Member
 
Messaggi: 3100
Iscritto il: 15/03/2010, 23:46

Re: Cryptmount

Messaggioda HAL 9000 » 06/03/2012, 15:30

Vedo che hai risolto mentre rispondevo, comunque invio lo stesso. :)

Specificando l'opzione dicevi di leggere dal file descriptor 0 (che è lo standard input), cosa che dovrebbe avvenire di default ma non ho mai provato con cryptmount. Per il resto 1 corrisponde allo standard output e il file descriptor 2 allo standard error. Magari quindi li conoscevi con una altro nome o li usavi senza chiamarli così. ;)
Poi è possibile anche aprirne altri da usare con le redirezioni, ma per questo non è necessario (EDIT: anche se funziona! ;D ).

La sintassi sarebbe sempre la solita:
Codice: Seleziona tutto
echo "miapassword" | cryptmount -a -w 0


Mi è venuto anche in mente che echo potrebbe aggiungere un "a capo" di troppo, che a volte fa casini. Immagino dipenda dall'intelligenza del programma usato. Prova anche echo con l'opzione "-n".
Laptop, desktop: Debian GNU/Linux Squeeze (amd64, i386) + Openbox
Raspberry Pi: Raspbian "Wheezy" (armhf)
Avatar utente
HAL 9000
Sr. Member
Sr. Member
 
Messaggi: 293
Iscritto il: 10/08/2009, 10:01

Re: Cryptmount

Messaggioda mirko.pagliai » 06/03/2012, 15:34

È la prima cosa che ho provato, ma con:
Codice: Seleziona tutto
echo "miapassword" | cryptmount -a -w 0

L'output:
Codice: Seleziona tutto
e2fsck 1.42 (29-Nov-2011)
e2fsck: serve il terminale per il riparo interattivo

E non è vero, perché usando poi il semplice comando fila tutto liscio:
Codice: Seleziona tutto
mirko@mirko-laptop:~$ cryptmount -a
Enter password for target "crypted_usb":
e2fsck 1.42 (29-Nov-2011)
/dev/mapper/crypted_usb: clean, 12/118784 files, 25503/473600 blocks

Molto strano.
Avatar utente
mirko.pagliai
Hero Member
Hero Member
 
Messaggi: 3100
Iscritto il: 15/03/2010, 23:46

Re: Cryptmount

Messaggioda HAL 9000 » 06/03/2012, 15:36

Potrebbe essere allora l'opzione -a che non accetta una password via file descriptor. Specificando il target con -m $NAME funziona lo standard input?
Laptop, desktop: Debian GNU/Linux Squeeze (amd64, i386) + Openbox
Raspberry Pi: Raspbian "Wheezy" (armhf)
Avatar utente
HAL 9000
Sr. Member
Sr. Member
 
Messaggi: 293
Iscritto il: 10/08/2009, 10:01

Re: Cryptmount

Messaggioda mirko.pagliai » 06/03/2012, 15:39

No scusa, ho copia-incollato il tuo comando ma sto lavorando sul mio eseguibile, cioè non ho utilizzato l'opzione -a in realtà.
Ad ogni modo, ora le ho provate entrambe, con la stesso risultato di prima. È strano.

EDIT:
notare comunque che così:
Codice: Seleziona tutto
/usr/bin/cryptmount -a --passwd-fd 0

il terminale mi rimane "appeso" e prende correttamente la digitazione della password.

EDIT2:
forse ho trovato qualcosa che fa al caso mio!
http://sourceforge.net/tracker/index.ph ... tid=790423
Avatar utente
mirko.pagliai
Hero Member
Hero Member
 
Messaggi: 3100
Iscritto il: 15/03/2010, 23:46

Re: Cryptmount

Messaggioda mirko.pagliai » 06/03/2012, 15:52

Mi accontento, per ora, di questo:
Codice: Seleziona tutto
#!/bin/bash

NAME="crypted_usb"

case $1 in
   mount)
      exec 5< <(zenity --entry --text "Inserire la password per criptare il volume" --title "Volume criptato" --window-icon question --hide-text)
      /usr/bin/cryptmount -m $NAME --passwd-fd 5
        ;;
        umount)
                /usr/bin/cryptmount -u $NAME
        ;;
        *)

        echo "Usage: $1 {mount|umount}" >&2
        exit 1
        ;;
esac

Non ci sono controlli particolari, ma è un punto di inizio.

Resta il perché non prendeva lo standard input.
Avatar utente
mirko.pagliai
Hero Member
Hero Member
 
Messaggi: 3100
Iscritto il: 15/03/2010, 23:46

Re: Cryptmount

Messaggioda HAL 9000 » 06/03/2012, 16:01

Dal link che riporti nel messaggi precedente, sembra che cryptmount necessiti dello standard input connesso al terminale, dovendo poter eseguire fsck in modo interattivo.

Funziona lo script con quel file descriptor anche se lo lanci non connesso ad alcun terminale?
Laptop, desktop: Debian GNU/Linux Squeeze (amd64, i386) + Openbox
Raspberry Pi: Raspbian "Wheezy" (armhf)
Avatar utente
HAL 9000
Sr. Member
Sr. Member
 
Messaggi: 293
Iscritto il: 10/08/2009, 10:01

Re: Cryptmount

Messaggioda mirko.pagliai » 06/03/2012, 17:04

Hai ragione tu. Purtroppo non funziona.

EDIT: gnome però gestisce il tutto autonomamente. Probabilmente userà cryptsetup, a questo punto...
Avatar utente
mirko.pagliai
Hero Member
Hero Member
 
Messaggi: 3100
Iscritto il: 15/03/2010, 23:46

Re: Cryptmount

Messaggioda HAL 9000 » 06/03/2012, 21:51

Lì diceva che il problema era risolvibile specificando nofsck in cmtab, che non so se sia soltanto l'equivalente di mtab per i file system crittografati. Ignoro però le conseguenze di tale mancato controllo e perché sia necessario (ammesso che lo sia) per cryptmount.

Potresti sennò provare a creare un secondo mini script (due righe) che si occupa di avviare un terminale che a sua volta richiama bash che richiama il primo script. Certo è meno bello a vedersi. :P
Laptop, desktop: Debian GNU/Linux Squeeze (amd64, i386) + Openbox
Raspberry Pi: Raspbian "Wheezy" (armhf)
Avatar utente
HAL 9000
Sr. Member
Sr. Member
 
Messaggi: 293
Iscritto il: 10/08/2009, 10:01

Re: Cryptmount

Messaggioda mirko.pagliai » 06/03/2012, 23:15

A questo punto rinuncio. Avevo avuto l'impressione che cryptmount fosse più flessibile di cryptsetup, invece mi rendo conto che il primo ha in più solo la possibilità di essere usato da utente semplice, per il resto invece è tutto il contrario. Avrò avuto un'impressione sbagliata.
Avatar utente
mirko.pagliai
Hero Member
Hero Member
 
Messaggi: 3100
Iscritto il: 15/03/2010, 23:46


Torna a Scripting

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti