45 lines
1.2 KiB
Plaintext
45 lines
1.2 KiB
Plaintext
--- scripts/umount.crypt
|
|
+++ scripts/umount.crypt 2007/09/21 09:14:07
|
|
@@ -57,9 +57,19 @@
|
|
exit 1;
|
|
fi;
|
|
|
|
+# kill remaining user processes if we're unmounting a user's home dir
|
|
+USER=`stat --format=%U $1 2>/dev/null` && getent passwd "$USER" | grep -e ":$1:" &> /dev/null
|
|
+if test $? -eq 0; then
|
|
+ lsof -t $1 | xargs kill -TERM &> /dev/null
|
|
+ sleep 1
|
|
+ lsof -t $1 | xargs kill -9 &> /dev/null
|
|
+ sleep 1
|
|
+fi
|
|
+
|
|
# ask cryptsetup about the underlying device
|
|
#
|
|
REALDEVICE=` "$CRYPTSETUP" status "$DMDEVICE" | sed -n '/device/s/[ ]*device:[ ]*//p'`;
|
|
+IMGDEVICE=`"$LOSETUP" -a | grep "$REALDEVICE" | awk -F\( '{ print $2 }' | sed 's/)//'`
|
|
|
|
"$UMOUNT" "$1";
|
|
if [ $? -ne 0 ]; then
|
|
@@ -69,7 +79,7 @@
|
|
|
|
# Check for LUKS
|
|
#
|
|
-if "$CRYPTSETUP" isLuks "$DEVICE" 2>/dev/null; then
|
|
+if "$CRYPTSETUP" isLuks "$REALDEVICE" 2>/dev/null; then
|
|
"$CRYPTSETUP" luksClose "$DMDEVICE";
|
|
else
|
|
"$CRYPTSETUP" remove "$DMDEVICE";
|
|
@@ -87,3 +97,12 @@
|
|
exit 1
|
|
fi
|
|
fi
|
|
+
|
|
+if echo "$IMGDEVICE" | grep ^/dev/loop >/dev/null; then
|
|
+ "$LOSETUP" -d "$IMGDEVICE";
|
|
+ if [ $? -ne 0 ]; then
|
|
+ echo "${0##*/}: error removing $IMGDEVICE" >&2
|
|
+ exit 1
|
|
+ fi
|
|
+fi
|
|
+
|