Salut à tous,
Alors voilà je pose le décor. J'ai une règle UDev qui à chaque connexion d'un périphérique précis (ici ma clef usb) fait appel à un script.
J'ai un debian live sur ma clef avec un /home crypté, donc 2 partitions: 1 système et 1 données, le /home crypté est dans un conteneur .img
Ainsi à la connexion de ma clef sur mon poste fixe, le script monte les partitions et doit aussi décrypter le conteneur pour monter son contenu dans un dossier (ici le contenu du /home) pour le synchroniser avec un dossier sur mon pc. Grâce à ça je concerve les traces de mon travail accomplis lors de mes déplacements.
Alors ici tout est censé marcher mais il y a un soucis lors de l'ouverture du conteneur. A noter que le même script exécuté à la main fonctionne parfaitement (lancé dans un terminal), du moins le bout de code qui fonctionne mal.
J'ai isolé le problème qui se situe à ce niveau:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
			echo $mdp|sudo /sbin/cryptsetup luksOpen $loop 
 
			# Monter
			sudo mount -o loop /dev/mapper/LUKS $CRYPT_MOUNT
Ce qui est bizare c'est le luks est apparement ouvert mais il n'est pas monté
J'ai d'abord pensé à un problème sur les droits d'éxécution mais j'ai mis un gros chmod 777 bourrin dessus et pareil :/
j'ai même mis un setuid sur "cryptsetup", le script lui même et rien...
Honnètement je ne sais plus où donner de la tête donc si vous avez une petite idée je dis pas non :-)

Merci d'avance à tous

PS: je vous poste l'intégralité du script pour mieux visualiser ;-)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#! /bin/bash
 
######################################################################################
# Script de gestion de connexion et sauvegarde du /home de la clef sur le poste fixe #
######################################################################################
 
 
#------------------------------------------------------------------------------------#
# Fonction									     #
#------------------------------------------------------------------------------------#
 
afficheTaille () {
 taille=$(sed '/\./! s/^.*$/&.00/' <<< $1)
  i=1
  while [[ ${#taille} -ge 7 ]]; do
    taille=$(bc <<< "scale=2;$taille/1024")
    ((i+=1))
  done
 
  case $i in
    1) taille+=" octets" ;;
    2) taille+=" Ko" ;;
    3) taille+=" Mo" ;;
    4) taille+=" Go" ;;
  esac
 
  echo $taille
}
 
#-------------------------------------------------------------------------------------#
# Déclaration des variables							      #
#-------------------------------------------------------------------------------------#
 
# Paramètres d'identification de la clef
DEVTYPE="usb"
ID_SERIAL_SHORT="A500000000026452"
KEY_SYNC=/dev/LiveUSB2
USERNAME="leseb" # Indispensable pour l'affichage des fenêtres Zenity
 
 
# Répertoire source, destination, de montage de LiveUSB2, du montage du volume crypté, de backup du .img
SRC_DIR=/home/leseb/MOUNT/
DEST_DIR=/home/leseb/udevsync/
MONT_POINT=/home/leseb/MOUNT/
CRYPT_MOUNT=/home/leseb/CRYPT/
CONTENEUR=/home/leseb/MOUNT/luks-home.img
BKP_CONT=/home/leseb/Backup_IMG/
 
 
# Fichiers de log horodatés
BKP_DATE=`date +"%Y-%m-%d_%H-%M"`
LOG_FILE=/tmp/Logs_Sync/sdBackup_${BKP_DATE}.log
BKP_LOG_FILE=$DEST_DIR/Logs_Sync/sdBackup_${BKP_DATE}.log
RSYNC_ERR=/tmp/rsync.err
 
 
#------------------------------------------------------------------------------------#
# Algo										     #
#------------------------------------------------------------------------------------#
 
# Initialisation du fichier de log
echo "Backup du $BKP_DATE" >> $LOG_FILE
echo "Début à `date +'%H:%M:%S'`" >> $LOG_FILE
 
# Action à l'insertion de la clef
if [ "$ID_FS_TYPE" = "ext2" ] ; then  # Variable de UDev pour l'insertion de clef
 
	# Montage de la partition contenant le volume crypté
	mount $KEY_SYNC $MONT_POINT
 
	# Demande de synchronisation
	su - ${USERNAME} -c "DISPLAY=:0.0 zenity --question  --title='Bienvenue' --text='Clef montée. \nVoulez-vous synchroniser le <b>/home</b> de la clef ?'"
 
	if [ "$?" = 0 ]; then # Si on clique sur "Valider"
 
		if [ -f $CONTENEUR ] ; then # vérifie si le volume crypté existe
 
			# Cherche un loop libre
			loop=$(losetup -f)
			/sbin/losetup $loop $CONTENEUR
 
			# Ouverture du conteneur et saisie de mot de passe
			mdp=$(su - ${USERNAME} -c "DISPLAY=:0.0 zenity --entry \
					--title='Ouverture du conteneur chiffré' \
					--text='Entrez le mot de passe pour ouvrir le conteneur chiffré' \
					--hide-text")
 
			# On envoie le mdp dans la commande
			echo $mdp|sudo /sbin/cryptsetup luksOpen $loop LUKS
 
			# On monte le contenu du conteneur dans un dossier
			sudo mount -o loop /dev/mapper/LUKS $CRYPT_MOUNT 
 
			# Synchro + barre de progression
			echo "0" > nb
			DEBUT=$(date +%s)
 
			rsync -av --delete --ignore-errors --force --progress $CRYPT_MOUNT/ $DEST_DIR/ 2>>$RSYNC_ERR | sed '
			/to-check=/! {
			/^sending/  {d;q;}
			/\/$/       {d;q;}
			/^sent/     {s/^.*$/echo "&" \>\/tmp\/rapport\.txt/e;d;q;};
			/^total/    {s/^.*$/echo "&" \>\>\/tmp\/rapport\.txt/e;d;q;};
			/^.\{43\}/  {s/\(^.\{20\}\).*\(.\{20\}$\)/echo \$\(\(\$\(cat nb\) + 1\)\) \> nb; echo "\1\[...\]\2" \>\/tmp\/svgrd_sed\.txt/e;d;q;};
			/^.\{43\}/! {s/^.*$/echo \$\(\(\$\(cat nb\) + 1\)\) \> nb; echo "&" \>\/tmp\/svgrd_sed\.txt/e;d;q;};
			}
			/to-check=/ {
			s/.*=\(.*\)\/\(.*\))/echo "#`echo "scale=2;\(\2-\1\)\*100\/\2" | bc | cut -d\. -f1`% (\$\(\(\2 - \1\)\) fichiers sur \2\) > \$\(cat \/tmp\/svgrd_sed\.txt\)"\; echo "scale=2;\(\2-\1\)\*100\/\2" | bc/e
			}
			' | su - ${USERNAME} -c "DISPLAY=:0.0 zenity --progress --width=580 --title='Synchronisation' --text='Initialisation de la sauvegarde...' --percentage=0 --auto-close"
 
			FIN=$(date +%s)
			TEMPS=$(($FIN-$DEBUT))
			TP_HEU=$(sed 's/^.$/0&/' <<< $(($TEMPS/3600)))
			TP_TMP=$(($TEMPS%3600))
			TP_MIN=$(sed 's/^.$/0&/' <<< $(($TP_TMP/60)))
			TP_SEC=$(sed 's/^.$/0&/' <<< $(($TP_TMP%60)))
			TP=$(echo "$TP_HEU:$TP_MIN:$TP_SEC")
 
			# Vérifie la sortie de rsync
			ERR=$(cat $RSYNC_ERR)
			if [[ ${#ERR} -ne 0 ]]; then
				su - ${USERNAME} -c "DISPLAY=:0.0 zenity --error --title='Erreur de copie' --text='Problème lors de la sauvegarde du répertoire <b>$MOUNT_POINT</b>.\n\n<b><span color='red'>$ERR</span></b>.'"
				rm $RSYNC_ERR
			else
				NB_FICH=$(cat nb)
				ENVOI=$(afficheTaille $(cat /tmp/rapport.txt | grep sent | cut -d' ' -f2))
				VITESS=$(afficheTaille $(cat /tmp/rapport.txt | grep sent | cut -d' ' -f9))
				su - ${USERNAME} -c "DISPLAY=:0.0 zenity --info --title='Terminé' --text='Sauvegarde du répertoire\n<b>$CRYPT_MOUNT</b> effectuée avec succès.\n$NB_FICH fichiers synchronisés\nTemps:\t$TP\nTransfert:\t$VITESS/sec\nTotal transféré: $ENVOI'"
				rm nb
			fi    
 
			# Copie du log sur le répertoire de synchro
			cp -f $LOG_FILE $BKP_LOG_FILE
 
			# Précaution de backup du conteneur crypté
			cp $CONTENEUR $BKP_CONT 
		else
			su - ${USERNAME} -c "DISPLAY=:0.0 zenity --error \
			--title='Erreur' \
			--text='Aucun volume crypté trouvé !'"
 
		fi
 
 
	fi
fi
 
if [ "$ACTION" = "remove" ] ; then  # Variable de UDev
 
	# Démonter le volume crypté
	umount $CRYPT_MOUNT
 
	# Fermer le volume crypté
	sudo /sbin/cryptsetup luksClose LUKS
 
	# Libérer le loop
	/sbin/losetup -d $loop
 
	# Démontage de la clef
	umount -f $KEY_SYNC >> $LOG_FILE
	echo "Clef "$ID_MODEL" démontée ("$ACTION")" >> $LOG_FILE
	su - ${USERNAME} -c "DISPLAY=:0.0 zenity --info  --title='Au revoir' --text='Clef démontée avec succès.'"
 
fi
 
#------------------------------------------------------------------------------------#
# EOF										     #
#------------------------------------------------------------------------------------#