Você pode escrever uma regra do udev como
ACTION=="remove", KERNEL=="sd[b-z][0-9]", SUBSYSTEM=="block", RUN+="umount-removed.sh"
O qual acionará o evento de desconexão e depois desmontará o sistema de arquivos desse script
MNT_POINT='df | grep "$DEVNAME" | awk '{print $6}''
#If still mounted
if [ ! -z "$MNT_POINT" ];then
logger -i -t usbrm -p daemon.notice "The device $DEVNAME is still mounted"
#Umount fs
umount $DEVNAME
if [ $? -eq 0 ];then
logger -i -t usbrm -p daemon.notice "$DEVNAME successfully unmounted from $MNT_POINT"
else
logger -i -t usbrm -p daemon.err "Impossible to umount $DEVNAME from $MNT_POINT. Aborting..."
fi
fi
Você pode ver o log em /var/daemon.log. Espero que ajude;)
Editar: Esqueci de precisar que o udev usa um espaço de nome específico para que você precise configurá-lo para compartilhar o ponto de montagem com o espaço do usuário.
Para fazer isso, localize o arquivo systemd-udevd.service
em seu sistema e duplique-o para /etc/systemd/system/systemd-udevd.service
e substitua o conteúdo por MountFlags=shared