an old suse 11.2 is to be transfered to a newer system, debian was chosen.
3 external usb-devices are used to backup some files, they are mounted using udev rules. The actual mounting is done in a separate script. This script works fine when called directly by root, but can not mount properly when called by the rule.
when it failed, ls -lah /export looks like this:
-----------------------------
drwxr-xr-x 8 root root 4,0K Okt 21 15:50 .
drwxr-xr-x 23 root root 4,0K Feb 26 2016 ..
drwxr-xr-x 7 root root 4,0K Okt 19 15:24 data
drwxrwxrwx 15 root root 4,0K Jun 22 13:28 local
drwxr-xr-x 2 root root 4,0K Okt 19 15:21 usb
drwxr-xr-x 2 root root 4,0K Okt 21 15:44 usb1
drwxr-xr-x 2 root root 4,0K Okt 21 15:50 usb2
d????????? ? ? ? ? ? usb3
------------------------------
last line, usb3, the directory is not accessible.
this is the rule (/etc/udev/rules.d/98-usbmount.rules):
---------------------------------
#
# rules zum automatischen mounten von USB-Devices
#
#hier sind die Regeln angepasst auf debian - dort werden andere Keys sichtbar als unter suse 11.2, deswegen musste ich
# das anpassen lgkf 28.10.16
#
KERNEL=="sd?1", ACTION=="add", ENV{ID_MODEL}=="WDC_WD30EZRX-00SPEB0", ENV{ID_FS_UUID}=="389CE0F676DA7740", SYMLINK+="usb1", RUN+="/etc/udev/scripts/usbmount add 1 389CE0F676DA7740"
KERNEL=="sd?1", ACTION=="add", ENV{ID_MODEL}=="WDC_WD30EZRX-00SPEB0", ENV{ID_FS_UUID}=="4EB9757B135E8163", SYMLINK+="usb2", RUN+="/etc/udev/scripts/usbmount add 2 4EB9757B135E8163"
KERNEL=="sd??", ACTION=="add", ENV{ID_MODEL}=="TOSHIBA_DT01ACA300", ENV{ID_FS_UUID}=="40983A39983A2E32", SYMLINK+="usb3", RUN+="/etc/udev/scripts/usbmount add 3 40983A39983A2E32"
# umount usb1-usbX
KERNEL=="sd?1", ACTION=="remove", ENV{ID_MODEL}=="WDC_WD30EZRX-00SPEB0", ENV{ID_FS_UUID}=="389CE0F676DA7740", RUN+="/etc/udev/scripts/usbmount remove 1"
KERNEL=="sd?1", ACTION=="remove", ENV{ID_MODEL}=="WDC_WD30EZRX-00SPEB0", ENV{ID_FS_UUID}=="4EB9757B135E8163", RUN+="/etc/udev/scripts/usbmount remove 2"
KERNEL=="sd??", ACTION=="remove", ENV{ID_MODEL}=="TOSHIBA_DT01ACA300", ENV{ID_FS_UUID}=="40983A39983A2E32", RUN+="/etc/udev/scripts/usbmount remove 3"
-------------------------------------
and this is the script used to mount (/etc/udev/scripts/usbmount):
-------------------------------------
#!/bin/bash
#
# usbmount - automount-Skript zum automatischen mounten von USB-Devices
# ueber udev
#
BASENAME=`basename $0`
TMPLOGGERFILE=/tmp/$BASENAME.$$
MOUNTTO=/export
DIRPREFIX=usb
EXPORTS=/etc/exports
EXPORTS_LINE="$MOUNTTO/${DIRPREFIX}$2 *(rw,no_root_squash,sync,no_subtree_check)"
EXPORT_SEARCH_PATTERN="^$MOUNTTO/${DIRPREFIX}$2"
#NFSSERVER=/etc/init.d/nfsserver
NFSSERVER='service nfs-kernel-server'
touch $TMPLOGGERFILE
log()
{
logger -i -t $BASENAME -f $TMPLOGGERFILE
rm $TMPLOGGERFILE > /dev/null 2>&1
}
usage()
{
echo "Usage: $BASENAME add|remove <devnr>" >> $TMPLOGGERFILE
log
exit
}
if [ $# -gt 3 ] ; then
usage
fi
echo Username is >> $TMPLOGGERFILE
whoami >> $TMPLOGGERFILE
echo $USER >> $TMPLOGGERFILE
echo $LOGNAME >> $TMPLOGGERFILE
if [ "$1" == "add" ] ; then
echo mount /dev/disk/by-uuid/$3 $MOUNTTO/$DIRPREFIX$2 >> $TMPLOGGERFILE
# mkdir -p $MOUNTTO/$DIRPREFIX$2 >> $TMPLOGGERFILE 2>&1
sleep 2
mount /dev/disk/by-uuid/$3 $MOUNTTO/$DIRPREFIX$2 >> $TMPLOGGERFILE 2>&1
# Falls der Mountpoint noch nicht exportiert, exportieren und
# den nfsserver reloaden
if [ `grep $EXPORT_SEARCH_PATTERN $EXPORTS | wc -l` -eq 0 ] >> $TMPLOGGERFILE 2>&1 ; then
echo Exporting $MOUNTTO/${DIRPREFIX}$2 ... >> $TMPLOGGERFILE 2>&1
cp -a /etc/exports /etc/exports.old >> $TMPLOGGERFILE 2>&1
echo "$EXPORTS_LINE" >> $EXPORTS
echo Reloading nfsserver ... >> $TMPLOGGERFILE 2>&1
$NFSSERVER reload >> $TMPLOGGERFILE 2>&1
fi
else
if [ "$1" == "remove" ] ; then
# Falls der Mountpoint exportiert, nicht mehr exportieren und
# den nfsserver reloaden
if [ `grep $EXPORT_SEARCH_PATTERN $EXPORTS | wc -l` -gt 0 ] ; then
echo Removing export $MOUNTTO/${DIRPREFIX}$2 ... >> $TMPLOGGERFILE 2>&1
grep -v $EXPORT_SEARCH_PATTERN $EXPORTS >> /tmp/$BASENAME.exports
cp -a /etc/exports /etc/exports.old >> $TMPLOGGERFILE 2>&1
mv /tmp/$BASENAME.exports /etc/exports >> $TMPLOGGERFILE 2>&1
echo Reloading nfsserver ... >> $TMPLOGGERFILE 2>&1
$NFSSERVER reload >> $TMPLOGGERFILE 2>&1
fi
echo umount $MOUNTTO/$DIRPREFIX$2 >> $TMPLOGGERFILE
umount $MOUNTTO/$DIRPREFIX$2 >> $TMPLOGGERFILE 2>&1
else
usage
fi
fi
log
------------------------------
the skcipt executes, this is output in /var/log/messages:
-----------------------------
Nov 2 11:15:49 nas1 kernel: [ 5470.990909] scsi 11:0:0:0: Direct-Access ASMT 2105 0 PQ: 0 ANSI: 6
Nov 2 11:15:49 nas1 kernel: [ 5470.991646] sd 11:0:0:0: Attached scsi generic sg7 type 0
Nov 2 11:15:49 nas1 kernel: [ 5471.002752] sd 11:0:0:0: [sdc] Spinning up disk...
Nov 2 11:15:58 nas1 kernel: [ 5472.004039] .........ready
Nov 2 11:15:58 nas1 kernel: [ 5480.070753] sd 11:0:0:0: [sdc] 732566646 4096-byte logical blocks: (3.00 TB/2.72 TiB)
Nov 2 11:15:58 nas1 kernel: [ 5480.072751] sd 11:0:0:0: [sdc] Write Protect is off
Nov 2 11:15:58 nas1 kernel: [ 5480.074733] sd 11:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
Nov 2 11:15:58 nas1 kernel: [ 5480.128554] sdc: sdc1 sdc2
Nov 2 11:15:58 nas1 kernel: [ 5480.134789] sd 11:0:0:0: [sdc] Attached SCSI disk
Nov 2 11:16:04 nas1 usbmount[2431]: Username is
Nov 2 11:16:04 nas1 usbmount[2431]: root
Nov 2 11:16:04 nas1 usbmount[2431]:
Nov 2 11:16:04 nas1 usbmount[2431]:
Nov 2 11:16:04 nas1 usbmount[2431]: mount /dev/disk/by-uuid/40983A39983A2E32 /export/usb3
Nov 2 11:16:04 nas1 usbmount[2431]: Exporting /export/usb3 ...
Nov 2 11:16:04 nas1 usbmount[2431]: Reloading nfsserver ...
-------------------------------------
it works fine when the script is started by root, this shows up in
/var/log/messages:
-------------------------------------
Nov 2 12:20:39 nas1 usbmount[2640]: Username is
Nov 2 12:20:39 nas1 usbmount[2640]: root
Nov 2 12:20:39 nas1 usbmount[2640]: root
Nov 2 12:20:39 nas1 usbmount[2640]: root
Nov 2 12:20:39 nas1 usbmount[2640]: mount /dev/disk/by-uuid/40983A39983A2E32 /export/usb3
Nov 2 12:20:39 nas1 usbmount[2640]: Exporting /export/usb3 ...
Nov 2 12:20:39 nas1 usbmount[2640]: Reloading nfsserver ...
--------------------------------------
mountpoint looks good and can be accessed.
the lines follwing 'Username is...'
all show 'root' now, this is different when called by the udev-rule.
anyway, whoami says 'root'
so i think the script is run by root - but can not mount properly.
any ideas?
by the way: the symlink-entries seem not to work, there is no device /dev/usb3
thanks in advance
this is a crosslink to:
https://www.heise.de/forum/heise-onl...29439215/show/