I worked up a way to store engagement/project data in an encrypted directory. I had originally wanted to dd a blob to the current file-system and then format & encrypt it. I found an easier way to go about this using the ecryptfs-utils suite. I worked up a script to help me perform this task every time I take on a new engagement. The tools used by this script come from the ecryptfs-utils package. Use this script in the following manner.
./ecryptfs_project_dir.sh acme /usr/local/projects
The entire script…
#!/bin/bash
PROJECT_NAME="$1"
PROJECT_BASE="$2"
print_help() {
echo "Usage: $(basename $0) <project name> <project base>"
}
if [ -z "${PROJECT_NAME}" ]; then
echo "Error: Provide me a project name."
echo
print_help
exit 1
fi
if [ -z "${PROJECT_BASE}" ]; then
echo "Error: Provide me a project base directory."
echo
print_help
exit 2
fi
mkdir -p ${PROJECT_BASE}/${PROJECT_NAME}
mkdir -p ${PROJECT_BASE}/.${PROJECT_NAME}
TMP_FILE="/tmp/tmp.$$.txt"
PASSWORD=$(date | md5sum | awk '{print $1}')
# Add password to session keyring
printf "%s" "${PASSWORD}" | ecryptfs-add-passphrase > $TMP_FILE
# Pull the signature from the temporary file
SIG=$(grep keyring $TMP_FILE | awk '{print $6}' | tr -d '[' | tr -d ']')
echo "Store this information in your project notes"
echo
echo "######################################################"
echo "${PASSWORD}:${SIG}"
echo "######################################################"
echo
rm -f $TMP_FILE
# Mount the directory
mount -t ecryptfs -o key=passphrase:passphrase_passwd=${PASSWORD},no_sig_cache=yes,verbose=no,ecryptfs_sig=${SIG},ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=no ${PROJECT_BASE}/.${PROJECT_NAME} ${PROJECT_BASE}/${PROJECT_NAME}
echo
echo "Use the following to remount the directory in the future"
echo
echo "mount -t ecryptfs -o key=passphrase:passphrase_passwd=${PASSWORD},no_sig_cache=yes,verbose=no,ecryptfs_sig=${SIG},ecryptfs_cipher=aes,ecryptfs_key_bytes=32,ecryptfs_passthrough=no,ecryptfs_enable_filename_crypto=no ${PROJECT_BASE}/.${PROJECT_NAME} ${PROJECT_BASE}/${PROJECT_NAME}"
echo
Storing the pertinent info in your project notes will allow you to remount the directory when necessary.


