Depuis toujours mes montages réseaux s’effectuaient automatiquement sans aucun soucis au démarrage de mon serveur. Mais voilà depuis peu, je me suis rendu compte qu’ils ne fonctionnaient plus. Pourtant, après vérifications mes credentials sont bons, puisque je peux accéder a la ressource en tapant smb://server/partage ! Tiens en passant on reparlera très vite de ce smb…
Donc le souci se situerait dans ma fstab ?Voici un extrait des lignes concernées:
# Monter nas
//192.168.0.89/netbackup /media/nas cifs credentials=/root/.smbcredentials,iocharset=utf8,rw,uid=1000,_netdev 0 0
# Monter box
//192.168.0.254/Disque\040dur /mnt/fbox cifs username=johndoe,password=***,iocharset=utf8,rw,uid=1000,_netdev 0 0
Et lorsque je tente un « mount -a » voici les messages d’erreur que j’obtiens:
root@server# mount -a
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
mount error(112): Host is down
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
Explication
En cherchant un peu sur le web, j’ai trouvé l’explication sur ce site en anglais.
Pour vous résumer , sous linux pour accéder à un dossier partagé on utilise un protocole réseau issu du monde « windows »…oui oui « Windows », en écrivant ceci je sais que certains vont saigner du nez mais pourtant les faits sont là.
Quel est donc ce fameux protocole?
il se prénomme SMB. Et là j’en vois déjà dire « mais n’importe nawak SMB c’est samba, et samba c’est sous linux….!… ». Pas vraiment ,enfin du moins à ces débuts, SMB signifiant Server Message Block était un protocole propriétaire.Inventé en 1985 par IBM il a rapidement été introduit dans l’écosystème windows pour le partage de fichiers et d’imprimantes. On peut aussi parfois le retrouver sous son ancien nom : CIFS.
Mais je vous l’accorde ,c’est bien ce protocole qui par la suite a été implémenté dans samba pour le partage de ressources entre un client et un serveur sous linux.
Donc le protocole SMB est utilisé comme suit:
un client annonce au serveur quelle version de SMB il veut parler avec lui pour le partage des ressources sur le réseau.Et des versions de SMB il en existe 3 .
Jusqu’à la version 4.13 du kernel linux, par défaut c’est le protocole SMB version 1 qui était utilisé. Mais depuis la saloperie wannacry est passé par là, et ayant trouvé ses heures de gloire en utilisant une faille dans le protocole smb version 1,depuis lors des mesures de sécurité ont été prises.
Donc à partir de la version 4.13 du kernel, le protocole smb par défaut est le SMB 3. Du coup si votre serveur de partage , typiquement le NAS de la maison utilise le SMB 1 par défaut, (et c’est très souvent le cas), il vous sera impossible de monter les partages à partir de votre fstab. Votre ubuntu desktop réclame du smb3 et votre serveur cause SMB1. Client et serveur doivent s’accorder sur leur version de SMB!
Solution
L’idéal est d’utiliser le procole SMB3 côté serveur mais parfois ça n’est pas toujours jouable. Du coup c’est côté client qu’il suffit d’adapter et de faire la manip suivante:
On rajoute simplement dans la fstab l’option ver=1.0 comme suit:
//192.168.0.3/netbackup /media/nas cifs credentials=/root/.smbcredentials,iocharset=utf8,vers=1.0,rw,uid=1000,_netdev 0 0
//192.168.0.254/Disque\040dur /mnt/fbox cifs username=johndoe,password=***,vers=1.0,iocharset=utf8,rw,uid=1000,_netdev 0 0
Bon niveau sécurité c’est franchement moyen, je vous conseille d’upgrader SMB à sa version 3 côté serveur dans la mesure du possible. Mais si un jour vous galérez sur le montage automatique de lecteurs réseaux sous linux alors la version de SMB et de votre kernel sera une piste à envisager.
Salut,
Vieux con des Unix Like, je continue NFS pour le partage inter-Linux (souvent les NAS l’incluent vu que ce sont des Linux Based).
Certains NAS savent aussi faire du SMB v3 après avoir upgradé.
A+
On est au moins 2 à utiliser nfs 😉
Bonjour,
Votre article ne mentionne pas NFS qui est *le* protocole d’echange fichier sous Linux. Samba, et sont implémentation open source du protocole SMB, n’existe que pour la compatibilité entre les deux monde. Utiliser SMB alors que l’ensemble des serveurs et clients sont sous Linux semble, en effet, malvenu ?
Bonne journée,
Tu as entièrement raison j’aurai dû évoquer NFS car dans mon exemple cest du linux/linux. mais je n’utilise pas NFS car il ne satisfera pas tous les différents appareils que j’ai connectés à la maison.De plus,à ça je préfère la gestion fine des utilisateurs sous samba. Après javoue NFS est plus simple et approprié pour du partage de dossiers entre os linux
Merci, c’est très instructif.
Tout plein de points que j’ignorais.
Top !! 🙂
Merci pour l’info
Non, SMB, n’est pas un partage réseau Linux natif. Le partage réseau Linux est le partage réseau standard Open-Source FTP (ou SFTP). Mais le problème est que Windows ne supporte pas (nativement) FTP et que les partages de fichiers Windows sont sur le protocole CIFS. Alors Linux a utilisé SMB pour pouvoir communiqué avec Windows… Et il a été tellement bien intégré qu’il est parfois utilisé entre Linux. Mais entre Linux, il faut préféré SFTP.
Jamais dit que SMB était natif du monde linux, menfin bon.Le FTP est un peu plus limité que SMB et au passage il est bien plus ancien (unix si tu nous regardes). FTP est dédié au transfert de fichiers et uniquement à ça sans parler de son architecture exclusivement en centralisée (mode client/serveur). Tandis que SMB (samba) est beaucoup plus complet et permet aussi le partage de ressources en réseau comme des imprimantes ce qui colle beaucoup mieux aux besoins et aux usages des utilisateurs de nos jours en entreprise par ex…
Bonjour,
J’ai un partage windows que je monte sur un srv linux via mount.cifs en version 3.0.
J’aimerai le scripter et faire un montage auto mais j’ai besoin de credentials, je les ai mis en place mais ce qui me gêne c’est que les identifiants sont en clair, ya til possibilité de chiffrer le fichier ? avec quel outil ? Ya til un autre moyen de stocker les login/mdp autrement pour le montage auto ? Merci à vous
Hello,
tu devrais regardais du côté de cifsloak
https://github.com/sudoofus/cifscloak