This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch feature/openbox in repository live-build-x2go. commit a8afba5d2899685682f5757f29d1bf73bf1e9cf6 Author: Stefan Baur (BAUR-ITCS) <kontakt@baur-itcs.de> Date: Tue Feb 6 12:19:15 2018 +0100 fixed error related to chmod, changed *LABEL* mechanism to the one used by 2260-getsshhostkeysfrommedia,added various comments to make code more readable/understandable --- .../lib/live/config/2270-getsshclientkeysfrommedia | 32 ++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/config/includes.chroot/lib/live/config/2270-getsshclientkeysfrommedia b/config/includes.chroot/lib/live/config/2270-getsshclientkeysfrommedia index 8090eee..a04800d 100755 --- a/config/includes.chroot/lib/live/config/2270-getsshclientkeysfrommedia +++ b/config/includes.chroot/lib/live/config/2270-getsshclientkeysfrommedia @@ -23,7 +23,7 @@ GetSSHClientKeysFromMedia () mkdir -p $(readlink -m "$USERHOME/.ssh") chown $TARGETUSERNAME: \ $(readlink -m "$USERHOME/.ssh") - chmod 700 $KEYDESTPATH + chmod 700 \ $(readlink -m "$USERHOME/.ssh") # any keyfile in the config dir will be copied over to live system @@ -74,46 +74,68 @@ GetSSHClientKeysFromMedia () TARGETUSERNAME="x2gothinclient" fi - # search for our magic label - X2GOTCELIVELABELS=$(awk '$3~/^[^\/]/ && $3="" ; $1=="X2GO-TCE-LIVE" { print $2 " " $3 " " $4 }' /var/lib/live/config/opensshkeys) + # list devices (and mountpoints, if present) + LABELMPLIST=$(lsblk -oLABEL,NAME,MOUNTPOINT,HOTPLUG -ln) + + # search for our magic label + X2GOTCELIVELABELS=$(echo -e "$LABELMPLIST" | awk '$3~/^[^\/]/ && $3="" ; $1=="X2GO-TCE-LIVE" { print $2 " " $3 " " $4}') # support for second label value (for dual-mode media where keys are stored on the windows-readable partition) - PORTABLEAPPLABELS=$(awk '$3~/^[^\/]/ && $3="" ; $1=="PORTABLEAPP" { print $2 " " $3 " " $4 }' /var/lib/live/config/opensshkeys) + PORTABLEAPPLABELS=$(echo -e "$LABELMPLIST" | awk '$3~/^[^\/]/ && $3="" ; $1=="PORTABLEAPP" { print $2 " " $3 " " $4}') # block device list, removable first (we want USB media to be able to override keys on fixed disks) BLOCKDEVS="$(echo "$X2GOTCELIVELABELS\n$PORTABLEAPPLABELS" | awk '$3 == "1" {print $2}') $(echo "$X2GOTCELIVELABELS\n$PORTABLEAPPLABELS" | awk '$3 == "0" {print $2}')" + # for every block device in our list, do ... for BLOCKDEV in $BLOCKDEVS; do + # check if it also appears in the list of devices carrying our magic label + # this should always be the case since we changed how BLOCKDEVS is assembled NEXTDEVICE=$(echo "$X2GOTCELIVELABELS\n$PORTABLEAPPLABELS" | grep "$BLOCKDEV") if [ -n "$NEXTDEVICE" ] ; then + # now figure out the mountpoint MNTPT=$(echo $NEXTDEVICE | awk '{print $2}') + # and the device name? Wait, this is the magic label instead. NEXTDEVICE=$(echo $NEXTDEVICE | awk '{print $1}') echo -n "\n$(date +'%F | %T | ')'$0' Checking status of Device '$NEXTDEVICE' for BLOCKDEV '$BLOCKDEV'." | tee -a /dev/tty8 if [ -n "$MNTPT" ] ; then + # If the mountpoint variable isn't empty, it means the device is already mounted. echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is mounted at: '$MNTPT'" | tee -a /dev/tty8 + # so let's check if we have a config directory at that mountpoint. if check_for_config $MNTPT ; then + # if we managed to pull a config off of it (or save one on it), we make a note of this ... touch /var/lib/live/config/opensshclientkeys + # and quit right here. exit 0 fi else + # So there's no active mount for the device with our magic label ... echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is not mounted." | tee -a /dev/tty8 + # let's see if this is a fixed disk. if grep -q "^0$" /sys/block/$BLOCKDEV/removable ; then + # yes, it is, so let's go ahead and try to mount it ... echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is a fixed disk, mounting ..." | tee -a /dev/tty8 + # obviously, we need a mountpoint for it ... mkdir -p /media/fixeddisks/$NEXTDEVICE + # and now we can try to mount it. Let's do it in readonly mode, just to play it safe. mount -o ro /dev/$NEXTDEVICE /media/fixeddisks/$NEXTDEVICE if check_for_config /media/fixeddisks/$NEXTDEVICE ; then + # we umount, then make a note that we succeeded ... umount /media/fixeddisks/$NEXTDEVICE touch /var/lib/live/config/opensshclientkeys + # and quit right here. exit 0 fi + # If we didn't succeed in pulling a config, we still need to umount what we mounted. umount /media/fixeddisks/$NEXTDEVICE else + # If a removable disk hasn't been mounted by the automounter, something's amiss and we shouldn't try to meddle with it. + # So let's make a note of this and move on. echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is a removable disk, not mounted by automounter, skipping." | tee -a /dev/tty8 - : fi fi fi done + # Now let's leave a mark saying that we're done, so the next script can pick up on it. echo "BLOCKDEVS: '$BLOCKDEVS'" > /var/lib/live/config/opensshclientkeys echo "X2GOTCELIVELABELS: '$X2GOTCELIVELABELS'" >> /var/lib/live/config/opensshclientkeys echo "PORTABLEAPPLABELS: '$PORTABLEAPPLABELS'" >> /var/lib/live/config/opensshclientkeys -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/live-build-x2go.git