Enable Legacy Filevault on Mac OS X Yosemite

Don't know who this person is, but this still works in Yosemite.

I know full disk encryption is better, but I run Undercover. I assume that if someone steals my Mac, they will take other things, and finding the Mac, might help find other things that have been stolen. I create a non-admin account with no password for them to login with, and encrypt my real account.

#!/bin/bash
if [ $UID != 0 ]; then
        echo "Run me as with sudo"
        exit 0
fi
echo "enter a master recovery password:"
read MASTER_PASSWORD
echo "enter username"
read USER_NAME
echo "enter size of sparsebundle (eg. 500g)"
read SIZE

SBUID=$(id -u $USER_NAME)
SBGID=$(id -g $USER_NAME)

security create-filevaultmaster-keychain -p $MASTER_PASSWORD /Library/Keychains/FileVaultMaster.keychain
#"security export" is broken! we need to do this manually
security unlock-keychain -p $MASTER_PASSWORD /Library/Keychains/FileVaultMaster.keychain
while [ ! -f /Library/Keychains/FileVaultMaster.cer ]
do
        read -p "Add /Library/Keychains/FileVaultMaster.keychain in KeyChainAccess.app and export the certificate to /Library/Keychains/FileVaultMaster.cer You will need to export to a user owned folder first. Press ENTER to continue."
done
chown 0:0 /Library/Keychains/FileVaultMaster.cer
chmod 600 /Library/Keychains/FileVaultMaster.cer
chmod 644 /Library/Keychains/FileVaultMaster.keychain

cd /Users/$USER_NAME
echo "Enter your user password."
hdiutil create -size $SIZE -encryption -agentpass -certificate /Library/Keychains/FileVaultMaster.cer -uid $SBUID -gid $SBGID -mode 0700 -fs "HFS+J" -type SPARSEBUNDLE -layout SPUD -volname "$USER_NAME" $USER_NAME.sparsebundle
chown -R $SBUID:$SBGID /Users/$USER_NAME/$USER_NAME.sparsebundle
du -h -d 1 /Users/$USER_NAME
df -h
read -p "Check that you have the size of the homefolder free on the disk. Press enter to continue."
mkdir sbdest
hdiutil attach -owners on -mountpoint sbdest $USER_NAME.sparsebundle
rsync -avxHEP ./ sbdest/ -exclude="$USER_NAME".sparsebundle/ -exclude="sbdest/"
hdiutil detach sbdest
rmdir sbdest
cd /private/var/db/dslocal/nodes/Default/users/
cp -i $USER_NAME.plist $USER_NAME.plist.bak
eval "defaults write /private/var/db/dslocal/nodes/Default/users/$USER_NAME.plist home_loc -array '\"<home_dir><url>file://localhost/Users/$USER_NAME/$USER_NAME.sparsebundle</url></home_dir>\"'"
echo "Remember to delete/move everything in /home/$USER_NAME except /home/$USER_NAME/$USER_NAME.sparsebundle or you will waste space besides keeping a clear text copy of your data on your HD"

Author: btk

Waste of Code

Comments on “Enable Legacy Filevault on Mac OS X Yosemite”