Archiv/TrueCrypt/TC-Passwortdialog

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Paketen

  2. Bearbeiten von Paketquellen

  3. Ein Terminal öffnen

  4. Einen Editor öffnen

  5. Rechte für Dateien und Ordner ändern

Diese Seite gehört zu dem Beitrag Archiv/TrueCrypt. Sie beschreibt, wie das Einhängen eines TC-Laufwerkes in die Verzeichnisstruktur mittels Passwortdialog realisiert werden kann.

Vorbereitung

./truecrypt-xlogin_s.png Um nicht jedes mal über die Konsole zu gehen, wenn man ein TC-Laufwerk einhängen will, kann man sich auch einen Passwortdialog (Bild rechts) anzeigen lassen (z.B. nach dem Start der Desktop-Umgebung). Dazu muss folgendes Paket installiert werden 1]:

Skripte anlegen

Anschließend müssen zwei Skripte angelegt werden, eines für das Einhängen eine TC-Laufwerkes und eines, und eines, um es wieder auszuhängen.

Dazu öffnet man einen Editor 4] mit Root-Rechten und legt die Datei /usr/local/bin/truecrypt-mount mit folgendem Inhalt an:

#!/bin/bash
# Skript zum Einbinden eines TrueCrypt-Volumens.
# by Hansgeorg Schwibbe, <hansgeorg.schwibbe@gmx.de>
# Copyright(c) 2007
filesystem=$1;
volume=$2;
mountpoint=$3;
mountoptions=$4;
helpbox_call_title="Hilfe";
helpbox_call_text="Aufruf: $0 <Dateisystem> <Volumen> <Mountpunkt> [Mount-Optionen]";
inputbox_pw_title="TrueCrypt-Volumen einbinden";
inputbox_mount_text_basic="Verschlüsseltes $filesystem-Volumen $volume\n\
in das Verzeichnis $mountpoint einbinden.";
inputbox_mount_text_mntoptions="Verschlüsseltes $filesystem-Volumen $volume\n\
mit den Parametern $mountoptions\n\
in das Verzeichnis $mountpoint einbinden."
inputbox_tcpw_text="Bitte das TrueCrypt-Kennwort eingeben:";
successbox_mount_title="Einbinden erfolgreich";
successbox_mount_text="Das TrueCrypt-Volumen wurde erfolgreich eingebunden!";
errorbox_mount_title="Fehler beim Einbinden";
errorbox_mounted_text="Das TrueCrypt-Volumen ist bereits eingebunden!";
errorbox_mounting_text="Das TrueCrypt-Volumen konnte nicht eingebunden werden!\n\
Möglicherweise ist das TrueCrypt-Kennwort oder einer der Argumente falsch!";
if [ "$filesystem" = "" ] || [ "$volume" = "" ] || [ "$mountpoint" = "" ]
then
  echo $helpbox_call_text;
  Xdialog --buttons-style text --title "$helpbox_call_title" --msgbox "$helpbox_call_text" 0 0;
  exit 1;
fi
if [ "$mountoptions" == "" ]
then
  inputbox_mount_text="$inputbox_mount_text_basic";
else
  inputbox_mount_text="$inputbox_mount_text_mntoptions";
  mntoptions="--mount-options $mountoptions";
fi
mounted=`truecrypt -l | grep $volume`;
if [ "$mounted" = "" ]
then
  tc_pw=`Xdialog --stdout --left \
         --title "$inputbox_pw_title" \
         --password --inputbox "$inputbox_mount_text\n$inputbox_tcpw_text" 0 0`;
  retval=$?;
  if [ $retval = 0 ]
  then
    truecrypt --filesystem $filesystem $mntoptions -p $tc_pw $volume $mountpoint;
    retval=$?;
    if [ $retval = 0 ]
    then
      Xdialog --title "$successbox_mount_title" --msgbox "$successbox_mount_text" 0 0;
    else
      Xdialog --left --buttons-style text --title "$errorbox_mount_title" --msgbox "$errorbox_mounting_text" 0 0;
    fi
  fi
else
  Xdialog --buttons-style text --title "$errorbox_mount_title" --msgbox "$errorbox_mounted_text" 0 0;
fi

Danach muss man die Datei noch ausführbar machen [5].

Jetzt muss noch die zweite Datei /usr/local/bin/truecrypt-dismount mit folgenden Inhalt angelegt werden:

#!/bin/bash
# Skript zum Auswerfen eines TrueCrypt-Volumens.
# by Hansgeorg Schwibbe, <hansgeorg.schwibbe@gmx.de>
# Copyright(c) 2007
mountpoint=$1;
helpbox_call_title="Hilfe";
helpbox_call_text="Aufruf: $0 <Mountpunkt>";
successbox_dismount_title="Auswerfen erfolgreich";
successbox_dismount_text="Das TrueCrypt-Volumen wurde erfolgreich ausgeworfen!";
errorbox_unmounted_title="Fehler beim Auswerfen";
errorbox_unmounted_text="An dem Mountpunkt ist kein TrueCrypt-Volumen eingebunden!";
errorbox_dismount_title="Schwerer Laufzeitfehler";
errorbox_dismount_text="Das TrueCrypt-Volumen konnte nicht ausgeworfen werden!";
if [ "$mountpoint" = "" ]
then
  echo $helpbox_call_text;
  Xdialog --buttons-style text --title "$helpbox_call_title" --msgbox "$helpbox_call_text" 0 0;
  exit 1;
fi
mounted=`truecrypt -l | grep $mountpoint`;
if [ "$mounted" = "" ]
then
  Xdialog --buttons-style text --title "$errorbox_unmounted_title" --msgbox "$errorbox_unmounted_text" 0 0;
else
  truecrypt -d $mountpoint;
  retval=$?;
  if [ $retval == 0 ]
  then
    Xdialog --title "$successbox_dismount_title" --msgbox "$successbox_dismount_text" 0 0;
  else
    Xdialog --buttons-style text --title "$errorbox_dismount_title" --msgbox "$errorbox_dismount_text" 0 0;
  fi
fi

Auch diese Datei muss noch ausführbar gemacht werden [5].

TC-Laufwerk ein-/aushängen

Nun kann das TC-Laufwerk mit folgendem Befehl eingebunden werden [3]:

# Allgemein:
truecrypt-mount <Dateisystem> <Pfad und Dateiname des TC-Laufwerkes> <Pfad des Mountpunktes>
# Beispiel:
truecrypt-mount ext3 /home/.encrypted.tc /home/encrypted/ 

Das eingehängte TC-Laufwerk wird mit nachfolgendem Befehl wieder ausgehängt:

# Allgemein:
truecrypt-dismount <Pfad und Dateiname des TrueCrypt-Volumens>
# Beispiel:
truecrypt-dismount /home/.encrypted.tc 

Bei manchen TrueCrypt-Installationen können TrueCrypt-Volumen nur als Root eingebunden werden. Sollte dies der Fall sein, können die Volumen mittels kdesu, gksu oder sudo eingebunden bzw. ausgeworfen werden:

# Über KDE:
kdesu truecrypt-mount <Dateisystem> <Volumen> <Mountpunkt> [Mount-Optionen]
kdesu truecrypt-dismount <Mountpunkt>
# Über GNOME:
gksu truecrypt-mount <Dateisystem> <Volumen> <Mountpunkt> [Mount-Optionen]
gksu truecrypt-dismount <Mountpunkt>
# Über die Konsole:
sudo truecrypt-mount <Dateisystem> <Volumen> <Mountpunkt> [Mount-Optionen]
sudo truecrypt-dismount <Mountpunkt> 

Alternativer Passwortdialog

wie gewohnt installieren [1].

Skripte

#!/bin/bash
# tcmount script

DEVICE_NAME="$1"
tc="truecrypt"
fat_options="uid=$(id -u),gid=$(id -g)"

case "$DEVICE_NAME" in
 data)
   "$tc" --mount-options "$fat_options","rw,sync,utf8,uid=$UID" /dev/data /media/data
  ;;
 backup)
  "$tc" --filesystem ext3 --mount-options "rw,sync" /dev/backup /media/backup
  ;;
esac
#!/bin/bash
# tcmount-gui script

volume=$1

while [ -z "$volume" ]
do
  volume=`zenity --list --title "Select volume" --checklist --column "Mount" --column "Volume" TRUE data FALSE backup`
  if [ -z "$volume" ]
  then
   zenity --question --text="Do you want to quit program?"
   if [ 0 -eq "$?" ]
   then
    exit 0
   fi
  fi
done

case "$volume" in
 data)
  path=/media/data
  ;;
 backup)
  path=/media/backup
  ;;
 *)
  path=""
  ;;
esac

if [ -z "$path" ]
then
 zenity --info --text="Volume $volume does not exist."
 exit 1;
fi

if mount | grep "$path " >/dev/null
then
 zenity --info --text "Volume $volume is already mounted at $path."
 exit 2;
fi

zenity --entry --hide-text --width=350 --title "Insert password for $volume" --text password | tcmount "$volume"
rc="$?"
if [ 1 -eq "$rc" ]
then
 zenity --error --text "Failed to mount volume $volume."
 exit 3
elif [ 0 -eq "$rc" ]
then
 zenity --info --text "Volume $volume successfully mounted."
fi

exit 0