Skip to content

Instantly share code, notes, and snippets.

@jettero
Created June 7, 2018 13:49
Show Gist options
  • Save jettero/1cf8b5790be323322da173adf60f7181 to your computer and use it in GitHub Desktop.
Save jettero/1cf8b5790be323322da173adf60f7181 to your computer and use it in GitHub Desktop.
my very secret files mount/umount kit
#!/bin/bash
DIR="$(dirname "$(realpath "$0")")"
CREATE=no
while [ -z "$MAP" ]; do
if [ -n "$1" ]
then MAP="$1"; shift
else
echo current image files:
ls -1 *.img | xargs -rn1 -IX basename X .img
echo
read -ep "MAP=" MAP
fi
MAP="$(basename "$MAP" .img)" # make sure we don't end with .img
IMG="$DIR/$MAP.img"
if [ ! -f "$IMG" ]; then
read -ep "create $IMG? " -i y YN
if [[ "$YN" =~ [Yy] ]]
then CREATE=yes
fi
fi
done
DEV=$(losetup -f) # name of the first unused loopback device
if [ x$CREATE = xyes ]; then
# set up the initial file
(set -x; dd if=/dev/zero of=$IMG bs=1M count=10)
fi
(set -x; sudo losetup $DEV "$IMG") || exit 1
if [ x$CREATE = xyes ]; then
# write random data to thing
(set -x; sudo badblocks -s -w -t random -v $DEV) || exit 1
# format with aes
(set -x; sudo cryptsetup -y luksFormat -c aes -s 256 $DEV) || exit 1
fi
(set -x; sudo cryptsetup luksOpen $DEV $MAP) || exit 1
if [ x$CREATE = xyes ]; then
# make an ext4 filesystem
(set -x; sudo mkfs.ext4 /dev/mapper/$MAP) || exit 1
fi
(set -x; sudo e2fsck -f /dev/mapper/$MAP) || exit 1
(set -x; sudo mkdir -vp /mnt/$MAP) || exit 1
(set -x; sudo mount /dev/mapper/$MAP /mnt/$MAP) || exit 1
if [ x$CREATE = xyes ];
then (set -x; sudo chown -cR $(id -u):$(id -g) /mnt/$MAP)
fi
#!/bin/bash
DIR="$(dirname "$(realpath "$0")")"
while [ -z "$MAP" ]; do
if [ -n "$1" ]
then MAP="$1"; shift
else
echo current image files:
ls -1 *.img | xargs -rn1 -IX basename X .img
echo
read -ep "MAP=" MAP
fi
MAP="$(basename "$MAP" .img)" # make sure we don't end with .img
IMG="$DIR/$MAP.img"
done
(set -x; sudo umount /mnt/$MAP)
(set -x; sudo cryptsetup luksClose $MAP)
#/dev/loop0: []: (/home/very/secret/images/other.img)
#/dev/loop1: []: (/home/very/secret/images/test.img (deleted))
devs=( $(losetup -a | \grep -E "$IMG|\\(deleted\\)" | cut -d: -f1 | grep /dev/loop) )
for DEV in "${devs[@]}"
do (set -x; sudo losetup -d "$DEV")
done
(set -x; sudo rmdir /mnt/$MAP)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment