Gå til innhold

avmonteringsproblemer med kryptert fil


Anbefalte innlegg

har laget en fil med eget kryptert filsystem i (eksperimentering. vurderer å kryptere hele home), men det roter seg til ved avmontering.

 

bash-skriptet mitt monterer slik (har klippet bort inputsjekk ol.)

echo "mounting encrypted file"
losetup $availableloop $secretfile
if [ "$?" -ne 0 ]; then
echo "losetup error.."
exit 1
fi

cryptsetup create secret $availableloop
if [ "$?" -ne 0 ]; then
echo "cryptsetup error.."
exit 1
fi
sleep 2

mount /dev/mapper/secret $secretmount
if [ "$?" -ne 0 ]; then
echo "mount error.."
exit 1
fi

 

og avmonterer

echo "unmounting encrypted file"
umount $secretmount
if [ "$?" -ne 0 ]; then
echo "umount error.. trying sloppy umount"

umount $secretmount -l
if [ "$?" -ne 0 ]; then
 echo "umount error.. "
 exit 1
fi
fi

cryptsetup remove secret
if [ "$?" -ne 0 ]; then
echo "cryptsetup error.. "
exit 1
fi

 

problemet er at etter å ha brukt innholdet (tilogmed om jeg bare leser fra det), så vil det ikke avmonteres. feiler på

umount $secretmount

og med lazy umount ( -l ), så feiler neste kommando med 'device is busy'.

 

ubuntu warty hadde dette problemet med all avmontering, men i hoary (som jeg bruker) er dette fixet. uten om i dette tilfellet da.

 

noen gode forslag? hva var kommandoen for å se hva som bruker en fil igjen?

 

edit:

root@aotearoa:~ # dmsetup info secret

Name:              secret

State:            ACTIVE

Tables present:    LIVE

Open count:        1

Event number:      0

Major, minor:      254, 3

Number of targets: 1

Endret av ways
Lenke til kommentar
Videoannonse
Annonse
ways kan du komme med en manual på hvordan du gjorde det? :D

hehe. klart det. les på linken zyp ga, eller på wikien til dm-crypt. tror jeg fulgte en howto i wikien.

 

jeg har laget 3 bashscript for å gjøre dette veldig mye lettere. de er relativt nye, og uten mye feilsjekking (siden det bare er jeg som skal bruke dem). anbefaler at du ser nøye gjennom koden før du prøver. de krever at du har laget mappen /mnt/secret, har pakken cryptsetup eller noe (sjekk wiki) og lastet modulene som er listet opp i det første skriptet..

 

og bør vel advare om at om montering feiler (i cryptsetup) pga feil passord, og du prøver å avmontere, så klikker noe. vet ikke helt hva enda. kommer masse hex-tall i terminalen og låser maskinen =). så ikke kjør avmontering om montering feilet. jobber med å rette feilen..

 

edit: feilen er fixet. nå funker ting som det skal

 

takk for fuser, zyp

 

 

have paranoid fun!

 

opprette kryptert fil:

#!/bin/bash

##creating crypted file (modules: dm_crypt dm_mod loop):

if [ $USER != "root" ]; then
echo "you are $USER, not root.."
exit 1
fi

#user competece check
if [ -z "$1" ]; then
       echo "use me like this: "
echo "$0 newfilename size(MB)"
exit 0
fi

if [ -z "$2" ]; then
       echo "use me like this: "
echo "$0 newfilename size(MB)"
exit 0
fi

##vars
secretfile=$1
filesize=$2
if [ "`echo $availableloop`" == "" ]; then
availableloop=`losetup -f`
fi

echo "creating crypted file $secretfile (size $filesize)"
echo "on $availableloop"

## creating file using random input (more secure)
dd if=/dev/urandom of=$secretfile bs=1M count=$filesize
if [ "$?" -ne 0 ]; then
echo "dd error.."
exit 1
fi

## setting up loop
losetup $availableloop $secretfile
if [ "$?" -ne 0 ]; then
echo "losetup error.."
exit 1
fi

## crypting
cryptsetup -c aes -y create $secretfile $availableloop
if [ "$?" -ne 0 ]; then
echo "cryptsetup error.."
exit 1
fi

## formating
mke2fs -j /dev/mapper/$secretfile
if [ "$?" -ne 0 ]; then
echo "mke2fs error.."
exit 1
fi

echo "ok. now mount it."
exit 0

 

montere fil:

#!/bin/bash

## cryptmnt.sh | mounts an encrypted file
##
## if to be used in /etc/fstab:
## /dev/mapper/secret /mnt/secret ext3 noauto,noatime 0 0

if [ $USER != "root" ]; then
echo "you are $USER, not root.."
exit 1
fi

#user competece check
if [ -z "$1" ]; then
echo "no input, so i'm mounting the standard"
echo "[alternative use: $0 filename]"
secretfile="/home/lars/.secret"
fi

##vars
secretmount="/mnt/secret"
if [ -z "$secretfile" ]; then
secretfile="$1"
fi

if [ "`echo $availableloop`" == "" ]; then
availableloop=`losetup -f`
fi


echo "setting up loop"
losetup $availableloop $secretfile
if [ "$?" -ne 0 ]; then
echo "losetup error.."
exit 1
fi

echo "creating crypt device"
cryptsetup create secret $availableloop
if [ "$?" -ne 0 ]; then
echo "cryptsetup error.."
exit 1
fi

echo "mounting encrypted file"
mount /dev/mapper/secret $secretmount
if [ "$?" -ne 0 ]; then
echo "mount error.. exiting cleanly"
cryptsetup remove secret
if [ "$?" -ne 0 ]; then
 echo "WARNING: failed clean exit"
fi
exit 1
fi

echo "mounting encrypted file...done"

 

avmotere fil:

#!/bin/bash

##see cryptmnt.sh for more info
if [ $USER != "root" ]; then
echo "you are $USER, not root.."
exit 1
fi

#user competece check
if [ -z "$1" ]; then
echo "umounting the standard"
#	echo "[alternative use: $0 mountpoint]"
secretmount=/mnt/secret
fi

##vars
#if [ -z "$secretmount" ]; then
#	secretmount="$HOME/$1"
#fi

echo "processes using the file:"
#fuser $secretmount
#read > /dev/null
fuser -ikmv $secretmount

echo "unmounting encrypted file"
umount $secretmount
if [ "$?" -ne 0 ]; then
echo "umount error.. who's using the file?"
fuser $secretmount
#
#	umount $secretmount -l
#	if [ "$?" -ne 0 ]; then
 echo "umount error.. "
 exit 1
#	fi
fi

cryptsetup remove secret
if [ "$?" -ne 0 ]; then
echo "cryptsetup error.. "
exit 1
fi

 

jeg tar selvfølgelig ikke noe ansvar blablabla.. ;)

Endret av ways
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...