Hi leutz ,
ich hab ein gravierendes Problem, und zwar hab ich ein script geschrieben das meine usb festplatte verschlüsselt und mountet.
Das funktioniert auch soweit nur wenn ich dir platte abziehe bevor ich sie unmounted habe schmiert der usb treiber komplett ab, nicht mehr ansprechbar und ich kann ihn auch nich entladen. Einzige möglichkeit ihn wieder zum laufen zu kriegen ist ein system neustart. Da ich das script für die Firma in der ich arbeite geschrieben hab und der Server dort den ganzen tag in benutzung ist kann ich das system nicht andauernd restarten wenn jemand aus versehen die platte abzieht.
plz help me ^^
Mfg
Nuke
------------------------------------------------------------------------------------
System:
Suse SLES 9
IBM Xseries 226
120gb Usb 2.0 Platte
Script:
#!/bin/bash
trap catch INT
catch()
{
echo "Catched !"
sleep 3
exit -1
}
FS=reiserfs
FILE=/dev/sdb1
LOOP=/dev/loop1
MOUNTPOINT=backup
PASSWDFILE=/etc/loop1.pwd
FS_KEY=/etc/fskey9.gpg
SEEDFILE=/etc/seed.pwd
PASSWDFD=3
KEYFD=4
# reset file permissions
/bin/chmod 400 ${PASSWDFILE} ${FS_KEY} ${SEEDFILE} 2>&1 > /dev/null
read SEED < ${SEEDFILE}
exec 3<> ${PASSWDFILE}
# Load modul if not already pressent
mod=`/sbin/lsmod | grep loop_fish2`
if [ "X$mod" == "X" ]
then
echo "Loading module loop_fish2"
/sbin/modprobe loop_fish2
sleep 3
fi
case $1 in
start)
backup=`/bin/mount | grep ${MOUNTPOINT}`
if [ "X$backup" != "X" ]
then
/bin/umount ${LOOP}
fi
# delete loop device if present
/sbin/losetup ${LOOP} 2>&1 > /dev/null
if [ $? == 0 ]
then
/sbin/losetup -d ${LOOP}
fi
exec 4<> ${FS_KEY}
/sbin/losetup -p ${KEYFD} -e twofish256 -S ${SEED} ${LOOP} ${FILE} && /bin/mount -t ${FS} ${LOOP} /${MOUNTPOINT}
;;
stop)
/bin/umount ${LOOP}
/sbin/losetup -d ${LOOP}
;;
init)
# umount if mounted
backup=`/bin/mount | grep backup`
if [ "X$backup" != "X" ]
then
/bin/umount ${LOOP}
fi
backup=`/bin/mount | grep ${FILE}`
if [ "X$backup" != "X" ]
then
/bin/umount ${FILE}
fi
# create directory if it does'nt exist
if [ ! -d /${MOUNTPOINT} ]
then
mkdir /${MOUNTPOINT}
fi
# delete loop device if present
/sbin/losetup ${LOOP} 2>/dev/null
if [ $? == 0 ]
then
/sbin/losetup -d ${LOOP}
fi
# fill the first 500 1k blocks with 0
/bin/dd if=/dev/zero of=${FILE} bs=1k count=500
# create a crypted random passwd
if [ ! -d /root/.gnupg ]
then
mkdir /root/.gnupg
fi
/usr/bin/openssl rand -base64 32 | \
/usr/bin/uuencode -m - | \
/usr/bin/head -n 65 | \
/usr/bin/tail -n 64 | \
gpg -a --symmetric -c --no-random-seed-file --cipher-algo TWOFISH --passphrase-fd ${PASSWDFD} | \
tail -n6 | head -n 3 | awk -F'\n' '{printf "%s%s%s", $1, $2, $3 }' > ${FS_KEY}
/bin/chmod 400 ${FS_KEY}
exec 4<> ${FS_KEY}
/sbin/losetup -p ${KEYFD} -e twofish256 -S ${SEED} ${LOOP} ${FILE}
case ${FS} in
reiserfs)
/sbin/mkreiserfs -l ${MOUNTPOINT} ${LOOP}
/bin/mount -t reiserfs ${LOOP} /${MOUNTPOINT}
;;
ext2)
/sbin/mke2fs ${LOOP} 2>&1 > /dev/null
/bin/mount -t ext2 ${LOOP} /${MOUNTPOINT}
;;
*)
echo "Unknown filesystem type!"
exit -2
;;
esac
;;
esac
ich hab ein gravierendes Problem, und zwar hab ich ein script geschrieben das meine usb festplatte verschlüsselt und mountet.
Das funktioniert auch soweit nur wenn ich dir platte abziehe bevor ich sie unmounted habe schmiert der usb treiber komplett ab, nicht mehr ansprechbar und ich kann ihn auch nich entladen. Einzige möglichkeit ihn wieder zum laufen zu kriegen ist ein system neustart. Da ich das script für die Firma in der ich arbeite geschrieben hab und der Server dort den ganzen tag in benutzung ist kann ich das system nicht andauernd restarten wenn jemand aus versehen die platte abzieht.
plz help me ^^
Mfg
Nuke
------------------------------------------------------------------------------------
System:
Suse SLES 9
IBM Xseries 226
120gb Usb 2.0 Platte
Script:
#!/bin/bash
trap catch INT
catch()
{
echo "Catched !"
sleep 3
exit -1
}
FS=reiserfs
FILE=/dev/sdb1
LOOP=/dev/loop1
MOUNTPOINT=backup
PASSWDFILE=/etc/loop1.pwd
FS_KEY=/etc/fskey9.gpg
SEEDFILE=/etc/seed.pwd
PASSWDFD=3
KEYFD=4
# reset file permissions
/bin/chmod 400 ${PASSWDFILE} ${FS_KEY} ${SEEDFILE} 2>&1 > /dev/null
read SEED < ${SEEDFILE}
exec 3<> ${PASSWDFILE}
# Load modul if not already pressent
mod=`/sbin/lsmod | grep loop_fish2`
if [ "X$mod" == "X" ]
then
echo "Loading module loop_fish2"
/sbin/modprobe loop_fish2
sleep 3
fi
case $1 in
start)
backup=`/bin/mount | grep ${MOUNTPOINT}`
if [ "X$backup" != "X" ]
then
/bin/umount ${LOOP}
fi
# delete loop device if present
/sbin/losetup ${LOOP} 2>&1 > /dev/null
if [ $? == 0 ]
then
/sbin/losetup -d ${LOOP}
fi
exec 4<> ${FS_KEY}
/sbin/losetup -p ${KEYFD} -e twofish256 -S ${SEED} ${LOOP} ${FILE} && /bin/mount -t ${FS} ${LOOP} /${MOUNTPOINT}
;;
stop)
/bin/umount ${LOOP}
/sbin/losetup -d ${LOOP}
;;
init)
# umount if mounted
backup=`/bin/mount | grep backup`
if [ "X$backup" != "X" ]
then
/bin/umount ${LOOP}
fi
backup=`/bin/mount | grep ${FILE}`
if [ "X$backup" != "X" ]
then
/bin/umount ${FILE}
fi
# create directory if it does'nt exist
if [ ! -d /${MOUNTPOINT} ]
then
mkdir /${MOUNTPOINT}
fi
# delete loop device if present
/sbin/losetup ${LOOP} 2>/dev/null
if [ $? == 0 ]
then
/sbin/losetup -d ${LOOP}
fi
# fill the first 500 1k blocks with 0
/bin/dd if=/dev/zero of=${FILE} bs=1k count=500
# create a crypted random passwd
if [ ! -d /root/.gnupg ]
then
mkdir /root/.gnupg
fi
/usr/bin/openssl rand -base64 32 | \
/usr/bin/uuencode -m - | \
/usr/bin/head -n 65 | \
/usr/bin/tail -n 64 | \
gpg -a --symmetric -c --no-random-seed-file --cipher-algo TWOFISH --passphrase-fd ${PASSWDFD} | \
tail -n6 | head -n 3 | awk -F'\n' '{printf "%s%s%s", $1, $2, $3 }' > ${FS_KEY}
/bin/chmod 400 ${FS_KEY}
exec 4<> ${FS_KEY}
/sbin/losetup -p ${KEYFD} -e twofish256 -S ${SEED} ${LOOP} ${FILE}
case ${FS} in
reiserfs)
/sbin/mkreiserfs -l ${MOUNTPOINT} ${LOOP}
/bin/mount -t reiserfs ${LOOP} /${MOUNTPOINT}
;;
ext2)
/sbin/mke2fs ${LOOP} 2>&1 > /dev/null
/bin/mount -t ext2 ${LOOP} /${MOUNTPOINT}
;;
*)
echo "Unknown filesystem type!"
exit -2
;;
esac
;;
esac