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. :-)