2014-02-10

Easy encrypted volumes on Linux

Look, a shell script!

#!/bin/bash
#
# Creating, mounting, and unmounting encrypted volumes, woo!

VOL="$2"

# Set default algorithm
[ "$ALGO" = "" ] && ALGO=aes-cbc-essiv:sha256
[ "$LOOP" = "" ] && LOOP=loop0

if [ "$VOL" != "" -a -e "$VOL.vol" ]; then

  if [ "$1" = "mount" ]; then
    echo 'Mounting encrypted volume ...'
    sudo losetup /dev/$LOOP "$VOL.vol"
    sudo cryptsetup -v create -c $ALGO -s 256 "$VOL" /dev/$LOOP
    sudo cryptsetup status "$VOL"
    sudo mount "/dev/mapper/$VOL" "$VOL" -t ext3 || $0 umount "$VOL"
    exit 0

  elif [ "$1" = "umount" ]; then
    echo 'Unmounting encrypted volume ...'
    sudo umount "$VOL"
    sudo cryptsetup remove "$VOL"
    sudo losetup -d /dev/$LOOP
    exit 0

  fi

elif [ "$VOL" != "" -a "$1" = "create" ]; then
  if [ -e "$VOL.vol" ]; then
    echo 'File already exists, bailing out:' $VOL.vol
    exit 1
  elif [ "$3" = "" ]; then
    echo "Usage: $0 create <volume> <MB>"
    exit 1
  fi
  echo 'Creating encrypted volume ...'
  dd if=/dev/urandom of="$VOL.vol" bs=1M count=$3
  sudo losetup /dev/$LOOP "$VOL.vol"
  sudo cryptsetup -v create -c $ALGO -s 256 "$VOL" /dev/$LOOP
  sudo mke2fs -j "/dev/mapper/$VOL"
  sudo cryptsetup status "$VOL"
  sudo mount "/dev/mapper/$VOL" "$VOL" -t ext3 || $0 umount "$VOL"
  exit 0

fi

echo "Usage: $0 <mount|umount|create> <volume>"

This is how I create and manage encrypted volumes, for data that I do not want to keep unencrypted on my local hard drive.

It mostly works. :-)

Tags: tech


Recent posts

...