Apportez votre aide…
Utiliser AutoFs avec Samba
Objectifs
Sur cette autre page du wiki, il vous a été expliqué comment accéder à un partage réseau manuellement ou en montant systématiquement au démarrage la ressource réseau en modifiant le fichier /etc/fstab. Le montage manuel ou par fstab a plusieurs inconvénients. Le principal, c'est qu'il n'est pas toujours possible de rendre le montage automatique : si lors du montage vous n'êtes pas encore connecté (en Wi-Fi par exemple), et bien le montage ne se fait pas, et il faut effectuer le montage manuellement. Un autre inconvénient, moins important, est que même si vous ne les utilisez pas, les dossiers indiqués dans /etc/fstab sont montés systématiquement et ils consomment des ressources, voire du courant si le montage sort de veille les disques durs d'un serveur de fichier.
AutoFs permet de résoudre ces 2 problèmes.
Installation
Installez les paquets autofs et smbfs
Attention en 14.04 remplacer smbfs par cifs-utils
Configuration
Tout d'abord, supprimez (ou commentez) dans /etc/fstab les montages que vous voulez gérer par AutoFs (si vous en aviez écrit auparavant).
Vous devez être capable de pinguer le serveur de fichier par son nom, cela peut impliquer de modifier le fichier /etc/hosts.
Accès aux partages sans authentification
Si les répertoires partagés auxquels vous voulez accéder sont accessibles en lecture seule à tout le monde, éditez le fichier (avec les droits d'administration) /etc/auto.master pour y ajouter la ligne :
/net/smb_ro /etc/auto.smb --ghost,--timeout=30
/net est le répertoire où les montages seront effectués. Il est recommandé d'utiliser un répertoire dédié aux montages autofs, n'utilisez pas /home par exemple. Si le répertoire n'existe pas, autofs le créera.
L'option ghost permet de toujours afficher les dossiers, mêmes lorsqu'ils ne sont pas montés. 30 correspond au temps pour démonter automatiquement : ne mettez pas une valeur trop importante, parce que si l'ordinateur distant est éteint le démontage plante ; il faut donc attendre au moins 30 secondes entre le dernier accès au partage samba et l'extinction de l'ordinateur distant.
Il ne reste plus qu'à lancer le serveur :
sudo service autofs start
Si vous faites un changement dans auto.master ou auto.smb :
sudo service autofs reload
Vous pouvez par exemple accédez au partage documents de l'ordinateur serveur_windows en vous rendant explicitement dans /net/smb_ro/serveur_windows/documents
cd mkdir net cd net ln -s //net/smb_ro/serveur_windows
L'accès à ~/net/serveur_windows dans le navigateur de fichier montera et affichera automatiquement l'ensemble des partages de serveur_windows
Accès aux partages avec authentification
Si les répertoires partagés auxquels vous voulez accéder sont protégés par mot de passe, éditez le fichier (avec les droits d'administration) /etc/auto.master pour y ajouter la ligne :
/net/smb /etc/auto.smb2 --ghost,--timeout=30
Editez le fichier (avec les droits d'administration) /etc/auto.smb2
#!/bin/bash # This file must be executable to work! chmod 755! # key="$1" key=`echo $1|sed -r "s/(.*):(.*)/\2/"` user=`echo $1|sed -r "s/(.*):(.*)/\1/"` [ $user ] || exit 1 uid=`getent passwd $user|sed -r "s/(.*):(.*):(.*):(.*):(.*):(.*):(.*)/\3/"` gid=`getent passwd $user|sed -r "s/(.*):(.*):(.*):(.*):(.*):(.*):(.*)/\4/"` home=`getent passwd $user|sed -r "s/(.*):(.*):(.*):(.*):(.*):(.*):(.*)/\6/"` [ $uid$gid$home ] || exit 1 cred="$home/.autofs.smbpasswd."$key opts="-fstype=cifs,nounix,nosuid,nodev,sec=ntlmv2,iocharset=utf8,file_mode=0600,dir_mode=0700,uid=$uid,gid=$gid" for P in /bin /sbin /usr/bin /usr/sbin do if [ -x $P/smbclient ] then SMBCLIENT=$P/smbclient break fi done [ -x $SMBCLIENT ] || exit 1 if [ -e "$cred" ] then opts=$opts",credentials=$cred" smbopts="-A "$cred else smbopts="-N" fi $SMBCLIENT $smbopts -gL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- ' BEGIN { ORS=""; first=1 } /Disk/ { if (first) print opts; first=0 dir = $2 loc = $2 # Enclose mount dir and location in quotes # Double quote "$" in location as it is special gsub(/\$$/, "\\$", loc); gsub(/ /, "\\ ", dir); gsub(/ /, "\\ ", loc); gsub(/ /, "\\ ", key); print " \\\n\t /" dir , "://" key "/" loc } END { if (!first) print "\n"; else exit 1 } '
opts="-fstype=cifs,nounix,nosuid,nodev,sec=ntlmv2,iocharset=utf8,file_mode=0600,dir_mode=0700,uid=$uid,gid=$gid"
avec les options de montage qui vous conviennent
Rendez ce fichier exécutable :
sudo chmod 755 /etc/auto.smb2
Il ne reste plus qu'à lancer le serveur :
sudo service autofs start
Si vous faites un changement dans auto.master ou auto.smb2 :
sudo service autofs reload
Pour chaque ordinateur partageant des fichiers, que l'on nommera serveur_windows, les utilisateurs qui voudront accéder aux partages de serveur_windows devront créer un fichier .autofs.smbpasswd.serveur_windows à la racine de leur répertoire personnel contenant les informations suivantes :
username=mon_nom_d_utilisateur_windows password=mon_mot_de_passe_windows_en_clair domain=domain_ou_groupe_de_travail_du_serveur_windows
Pensez à protéger ce fichier contre la lecture avec la commande :
chmod 600 ~/.autofs.smbpasswd.serveur_windows
Vous et vous seul pouvez par exemple accéder au partage documents de l'ordinateur serveur_windows en vous rendant dans /net/smb/mon_nom_d_utilisateur_linux:serveur_windows/documents
cd mkdir net cd net ln -s /net/smb/mon_nom_d_utilisateur_linux:serveur_windows serveur_windows
L'accès à ~/net/serveur_windows dans le navigateur de fichier montera et affichera automatiquement l'ensemble des partages de serveur_windows qui vous sont accessibles