À partir de la version 11.04, l’utilisation des montages smb devient galère, voire quasiment impossible (je n’ai pas réussi à faire quoi que ce soit depuis que j’ai réinstallé mon PC).
On peut se tourner vers FUSE, qui est prévu pour faire des montages à partir d’un login utilisateur. FUSE n’étant qu’une couche de base, il faut rajouter des outils complémentaires pour faire les montages.
Actuellement, il existe deux outils :
fusesmb, qui permet de retrouver une arborescence SAMBA du réseau. Le moins que l’on puisse dire, c’est que c’est peu performant, quand ça fonctionne...
sshfs, qui permet de réaliser des montages ssh. Pratique si vous avez des serveurs Linux et, après plusieurs semaines d’utilisation, c’est très stable.
L’identification peut être réalisée soit par mot de passe, soit par utilisation d’un certificat numérique.
Identification par mot de passe
Préparation du serveur
Vérifiez que vous avez installé les paquets adéquats :
ldap-auth-client
ldap-auth-config
ldap-utils
libaprutil1-ldap
libldap-2.4-2
libnss-ldap
libpam-ldap
Configurez également correctement d’une part le fichier /etc/ldap.conf :
base ou=agriculture,o=gouv,c=fr
uri ldaps://monserveur.com
ldap_version 3
pam_password md5
nss_base_passwd ou=People,ou=agriculture,o=gouv,c=fr?one
nss_base_shadow ou=People,ou=agriculture,o=gouv,c=fr?one
nss_base_group ou=Group,ou=agriculture,o=gouv,c=fr?one
nss_base_hosts ou=Hosts,ou=agriculture,o=gouv,c=fr?one
ssl start_tls
ssl on
tls_checkpeer yes
tls_cacertfile /etc/ssl/certs/igca-racine-serveur.crt
et le fichier /etc/nsswitch.conf :
passwd: files ldap
group: files ldap
shadow: files ldap
Il faut que votre serveur soit en mesure d’accepter les connexions ssh de la part des utilisateurs. Vous devrez donc modifier les fichiers pam.
common-account :
# here are the per-package modules (the "Primary" block)
account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore] pam_ldap.so
common-password :
# here are the per-package modules (the "Primary" block)
password [success=2 default=ignore] pam_unix.so obscure sha512
password [success=1 user_unknown=ignore default=die] pam_ldap.so use_authtok try_first_pass
common-session :
# and here are more per-package modules (the "Additional" block)
session required pam_unix.so
session optional pam_ldap.so
session optional pam_ck_connector.so nox11
# end of pam-auth-update config
common-auth :
# here are the per-package modules (the "Primary" block)
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_ldap.so use_first_pass
Script de connexion
Ce script permet de saisir le mot de passe, et de l’utiliser pour les connexions SSH sans avoir à le retaper à chaque montage :
cd ~
LOGIN=eric.quinton
RACINE=~/mnt
#read -s -p "mot de passe : " mdp
echo "Montages en cours..."
mkdir -p $RACINE/serveur1/donnees
mkdir -p $RACINE/serveur2/eric.quinton
mkdir -p $RACINE/serveur3/www
echo $mdp|sshfs $LOGIN@serveur1:/home/eric.quinton $RACINE/serveur1/eric.quinton -o password_stdin,allow_other
echo $mdp|sshfs $LOGIN@serveur2:/opt/donnees $RACINE/serveur2/donnees -o password_stdin,allow_other
echo $mdp|sshfs $LOGIN@serveur3:/var/www $RACINE/serveur3/www -o password_stdin
Identification par certificat
Vous avez également la possibilité d’utiliser votre certificat numérique pour vous identifier. Pour cela, dans le serveur cible, dans le dossier /home/login/.ssh, créez un fichier authorized_keys et copiez-y votre clé publique.
Votre clé privée doit être dans votre dossier /.ssh/, et porter le nom id_rsa (ou id_dsa si vous avez généré une clé dsa). Assurez-vous d’avoir protégé votre clé privée avec un mot de passe non trivial !
Script de connexion
cd ~
LOGIN=eric.quinton
RACINE=~/mnt
#read -s -p "mot de passe : " mdp
echo "Montages en cours..."
mkdir -p $RACINE/serveur1/donnees
mkdir -p $RACINE/serveur2/eric.quinton
mkdir -p $RACINE/serveur3/www
sshfs $LOGIN@serveur1:/home/eric.quinton $RACINE/serveur1/eric.quinton -o allow_other
sshfs $LOGIN@serveur2:/opt/donnees $RACINE/serveur2/donnees -o allow_other
sshfs $LOGIN@serveur3:/var/www $RACINE/serveur3/www -o allow_other
Démontage des lecteurs
Voici un script qui vous permettra de démonter vos lecteurs à la fermeture de la session graphique :
/usr/local/bin/demontage.sh
#!/bin/bash
for montage in $(mount -l -t fuse.sshfs|grep $USERNAME|sed s/^.*\ on\ //|sed s/type.*$//)
do
fusermount -u $montage
done
et pour qu’il soit exécuté à la fermeture de la session graphique :
/etc/gdm/PostSession/Default
#!/bin/sh
/usr/local/bin/demontage.sh
exit 0