Comment ajouter un raccourci réseau vers son synology sous Ubuntu 17.10

Récemment, j’ai mis à jour Ubuntu vers la nouvelle version 17.10. Je me suis aperçu très rapidement que mes « raccourcis réseau » ne fonctionnaient plus.
J’ai d’abord pensé que le fichier /etc/fstab avait été écrasé où que mon fichier .smbcredentials avait disparu mais il n’en n’était rien. (Quel suspense !..)

Accéder au NAS pour faire des vérifications et modifications

A la lecture de la première publication de cet article, je me suis aperçu que je n’avais pas indiqué comment accéder au NAS pour appliquer les modifications qui suivent.
J’ai donc créé un petit article que vous pouvez trouver à cette adresse : https://www.aureuswebfactory.fr/comment-acceder-a-un-nas-synology-en-ligne-de-code-en-ssh-via-putty/.

Cet article vous permettra de pouvoir suivre la suite de ce tutoriel. Bon lecture.

Le fichier /etc/fstab

Pour commencer, je dispose d’un DS211 de Synology acheté en 2011 et qui tournait à l’époque avec la version du gestionnaire DSM 3.0. A l’heure où j’écris ces lignes, les mises à jours successives ont monté ce gestionnaire à la version DSM 6.1.

Qu’est ce que c’est que ce fichier fstab ?

Quand Ubuntu et plus généralement Linux s’amorce, il vient lire un fichier appelé fstab qui veut dire file systems table – table des systèmes de fichiers. (plus d’informations sur le wiki)
Ce fichier est localisé sur Ubuntu 17.10 dans le dossier /etc/fstab. Il s’agit d’un fichier texte qui peut donc s’ouvrir avec n’importe quel éditeur de texte sous linux. Personnellement, préférant l’éditeur de texte nano, je l’ai d’abord installé sur l’ordinateur. En effet, il n’était pas installé avec ma distribution ubuntu 12.04 au départ  :

utilisateurLambda@Bureau:~$ sudo apt update
sudo apt install nano

Puis j’édite le fichier fstab :

utilisateurLambda@Bureau:~$ sudo nano /etc/fstab

Pourquoi sudo nano /etc/fstab et pas nano /etc/fstab (sans le sudo)?
Car il s’agit d’un fichier appartenant à root et que pour le modifier, il faut soit être le super utilisateur root soit faire partie du groupe « root ». C’est le but de la commande sudo.
On peut visualiser ces droits en tapant :

utilisateurLambda@Bureau:~$ ls -al /etc/fstab
-rw-rw-r-- 1 root root 912 nov.  12 15:34 /etc/fstab

Après avoir tapé votre mot de passe, si vous n’arrivez pas à entrer dans le fichier malgré cette commande, vous n’êtes probablement pas membre du groupe sudo.
Aussi, comme le fichier des groupes /etc/group est visualisable en lecture seule pour tous les utilisateurs, vous pouvez identifier les membres du groupe sudo présents sur votre ordinateur en tapant :

utilisateurLambda@Bureau:~$ cat /etc/group

La commande cat est assez pratique ici et affiche tous les groupes. Recherchez la ligne où sudo apparaît et vous connaîtrez les membres de ce groupe qui pourront vous y ajouter.

Contenu d’un fichier fstab

Le fichier /etc/fstab est de la sorte.

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sdb1 during installation
UUID=8623afa2-26d8-4bz4-82dd-7019aa74c8e9 /               ext4    noatime,discard,errors=remount-ro 0       1
# swap was on /dev/sdb5 during installation
UUID=03380d90-07d1-4c89-a726-45mli4aa732d none            swap    sw              0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
/dev/hdc        /media/cdrom0   udf,iso9660 user,noauto     0       0

Ainsi, on peut voir que l’amorçage se fait sur l’unité :
UUID=8623afa2-26d8-4bz4-82dd-7019aa74c8e9 (ext4 = disque dur principal)
et que l’unité :
UUID=03380d90-07d1-4c89-a726-45mli4aa732d sert de swap ie. la mémoire virtuelle (plus d’info).

En dessous, deux lignes servent à définir le lecteur disquette 3,5″ et le DVD/ROM. En fait, je ne dispose pas de lecteur disquette mais Ubuntu le charge comme module au démarrage. En fait, je pourrais effacer le lecteur disquette du démarrage en bannissant le module :

utilisateurLambda@Bureau:~$ echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
utilisateurLambda@Bureau:~$ sudo rmmod floppy
utilisateurLambda@Bureau:~$ sudo update-initramfs -u

C’est en dessous de ces lignes que nous allons créer notre raccourci réseau, c’est à dire le montage d’un disque distant.

Comment monter un lecteur distant ?

Une particularité du montage permanent et qu’on peut le tester avant de l’inscrire dans le marbre dans le fichier \etc\fstab.

Pour ma part, j’ai d’abord suivi le tuto présent sur le wiki d’ubuntu. J’ai eu beaucoup d’erreurs mount et finalement cette méthode m’a permis de comprendre un peu mieux les règles de montage. Je vais aussi reprendre un bonne partie de ce tuto dans mes exemples.

Vérifiez d’abord si l’utilitaire cifs est bien installé.

utilisateurLambda@Bureau:~$ sudo apt update
utilisateurLambda@Bureau:~$ sudo apt install cifs-utils

Créez le dossier de montage.

Il faut créer un dossier de montage. Nous allons l’appeler simplement mondossier.
Il s’agit d’un dossier qui restera vide mais permettant la liaison avec votre dossier distant.
Comme le dossier doit être avoir des droits root, il faut le créer avec la commande sudo :

utilisateurLambda@Bureau:~$ sudo mkdir /media/mondossier

Ensuite nous allons considérer que nous voulons partager le dossier dossierpartage présent sur le synology qui possède, pour sa part, l’adresse IP 192.168.1.10.

Connaître son uid et son gid sous Ubuntu

Le uid et le gid vont servir un peu plus tard lors de la définition du montage.
Pour les obtenir, la commande est très simple car il suffit de taper :

utilisateurLambda@Bureau:~$ id

et vous obtiendrez :

uid=1000(utilisateurLambda) gid=1000(utilisateurLambda) groupes=1000(utilisateurLambda),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

Ensuite, trois possibilités s’offrent à vous en fonction des droits que vous avez accordés sur le Synology.

Montage de dossiers réseaux

Pour l’utilisateur « invité » (sans mot de passe)

Il s’agit d’un montage que je n’utilise pas personnellement. En fait, je n’ai pas d’utilisateurs « invité » sur mes équipements.
Si tel est votre cas, éditez le fichier /etc/fstab via la commande précédente :

utilisateurLambda@Bureau:~$ sudo nano /etc/fstab

Puis ajouter ces lignes à la fin du fichier :

#mon premier montage
//192.168.1.10/dossierpartage  /media/mondossier  cifs  guest,uid=1000,iocharset=utf8  0  0

Sortez de nano via CTRL+O (enregistrement) et CTRL+X (sortie). Vous avez probablement vu que j’ai rajouté un commentaire via la lettre #. Je vous conseille d’en mettre, c’est assez pratique pour s’y retrouver quelques mois après des modifications. Si l’accès vous est autorisé, tentez le montage via :

utilisateurLambda@Bureau:~$ sudo mount -a

Si vous avez des erreurs qui s’affichent (souvent mount error(95): Operation not supported), je traite un peu plus loin les quelques cas qui me sont arrivés…

Pour votre utilisateur (avec mot de passe)

Il s’agit de la version la plus rapide pour créer un montage.
Éditez le fichier /etc/fstab via la commande précédente :

utilisateurLambda@Bureau:~$ sudo nano /etc/fstab

Puis ajouter ces lignes à la fin du fichier :

#montage avec identifiant et mot de passe en clair 
//192.168.1.10/dossierpartage  /media/mondossier  cifs  username=utilisateurLambda,password=motDePasseSurNasSynology,iocharset=utf8,sec=ntlm  0  0

Sortez de nano via CTRL+O (enregistrement) et CTRL+X (sortie) et si l’accès vous est autorisé, tentez le montage comme avec la commande précédente.

Si vous êtes le seul à utiliser Ubuntu, vous pouvez utiliser cette méthode. Sinon, je vous conseille celle juste après ces lignes.
En effet, le fichier /etc/fstab est modifiable que par l’utilisateur root ou par tout utilisateur faisant parti du groupe sudo mais est lisible par tout le monde (voir les droits du fichier /etc/fstab décrit un peu plus haut dans cette page). On voit donc que quiconque ayant accès au même ordinateur que vous peut lire votre identifiant et votre mot de passe.

Pour votre utilisateur (avec mot de passe caché)

Pour pallier au problème de confidentialité décrit ci-dessus, on peut utiliser un fichier appelé .smbcredentials, qui donnerait une traduction « fichier de crédibilités pour Samba ». A noter qu’on peut lui donner n’importe quel nom
Nous allons donc créer un fichier caché (le . devant smbcredentials veut dire qu’il sera caché mais pas invisible) dans le répertoire home de l’utilisateur et lui indiquer l’identifiant et le mot de passe de l’utilisateur autorisé à aller vers le NAS synology.  Ainsi, tout en créant le fichier, éditez-le via :

utilisateurLambda@Bureau:~$ nano ~/.smbcredentials

Puis écrivez juste ces deux lignes :

username=utilisateurLambda
password=motDePasseSurNasSynology

Sortez de nano via CTRL+O (enregistrement) et CTRL+X (sortie) puis accordez au fichier que des droits liés à l’utilisateur.

utilisateurLambda@Bureau:~$ chmod 600 .smbcredentials

Ainsi, l’utilisateur utilisateurLamba sera le seul à pouvoir lire et éditer ce fichier sans compter le super utilisateur root.

Ensuite modifier votre fichier /etc/fstab comme suit :

#montage avec identifiant et mot de passe cachés dans un fichier .smbcredentials
//192.168.1.10/dossierpartage  /media/mondossier  cifs  credentials=/home/utilisateurLamba/.smbcredentials,iocharset=utf8 0 0 

Voilà normalement votre montage est terminé et vous pouvez tester le montage via :

utilisateurLambda@Bureau:~$ sudo mount -a

Le cas de UID et de GID

Oui mais je ne vois pas de uid ou de gid dans la phrase de connexion. Est-ce normal ?
De mon côté, la phrase précédente fonctionnait mais je ne pouvais pas lire les fichiers ni écrire dans le répertoire sur le NAS. Aussi je l’ai modifié ainsi :

#montage avec identifiant et mot de passe cachés dans un fichier .smbcredentials
//192.168.1.10/dossierpartage  /media/mondossier  cifs  file_mode=0777,uid=1000,gid=1000,credentials=/home/utilisateurLamba/.smbcredentials,iocharset=utf8 0 0 

Les problèmes et les erreurs de montage

Dès que je faisais un sudo mount -a, une erreur de montage mount error(95): Operation not supported n’arrêtait pas d’apparaître.

utilisateurLambda@Bureau:~$ sudo mount -a
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

ou si le montage était apparu dans l’explorateur de fichier, un clic sur celui -ci faisait apparaître :

qui indiquait que la commande sudo mkdir /media/mondossier ne s’était pas bien déroulée ou bien :

qui me donnait un message où seul root pouvait monter le dossier (ce qu’il faisait déjà).
J’ai donc essayé avec la gestion des domaines en ajoutant une ligne au fichier .smbcredentials

username=utilisateurLambda
password=motDePasseSurNasSynology
domain=Maison

mais comme je n’étais raccordé à aucun domaine Windows, je doutais un peu du résultat. En effet, cela n’a eu aucun effet.

J’ai aussi essayé de jouer sur la sécurité comme de nombreuses fois lu sur les forums en utilisant les paramètres sec=ntlm à la fin de la ligne de montage dans le fichier /etc/fstab.

#montage avec identifiant et mot de passe cachés dans un fichier .smbcredentials
//192.168.1.10/dossierpartage  /media/mondossier  cifs  file_mode=0777,uid=1000,gid=1000,credentials=/home/utilisateurLamba/.smbcredentials,iocharset=utf8,sec=ntlm 0 0 

De ce côté là, toujours pas de succès.

Le salut est venu en regardant de plus près l’erreur mount error(95): Operation not supported. La description sommaire n’étant pas très loquace, j’ai utilisé la commande pour afficher la mémoire tampon des messages du noyau afin de débugger via :

utilisateurLambda@Bureau:~$ dmesg | tail
[13382.891479] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[13386.987655] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[13391.051779] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[13394.016038] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[13395.115836] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[13399.179864] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[13403.275990] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[13434.962894] No dialect specified on mount. Default has changed to a more secure dialect, SMB3 (vers=3.0), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 specify vers=1.0 on mount. For somewhat newer servers such as Windows 7 try vers=2.1.
[13434.975080] CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.1 on mount for accessing older servers
[13434.975099] CIFS VFS: cifs_mount failed w/return code = -95

Ainsi le message Default has changed to a more secure dialect, SMB3 (vers=3.0) m’a aiguillé vers une erreur provenant du NAS Synology et non de l’ordinateur Ubuntu.

Comment mettre le serveur samba du serveur Synology à la version 3.0 ?

En fait, c’est assez simple. Il suffit d’entrer dans le DSM du synology via la page de connexion (http://192.168.1.10:5000 pour ceux qui n’ont pas changé les paramètres de connexion et en reprenant l’adresse IP de notre exemple). En cliquant sur l’icône du panneau de configuration, dirigez vous vers les services des fichiers.

J’espère pour vous que le service Samba est activé (case cochée) puis cliquez sur « paramètres avancés ».

On voit que le protocole Samba sur mon serveur Synology est valable jusqu’à la version 2.0 (en fait 2.1).

Sélectionnez le protocole maximum SMB3 (samba version 3.0) puis cliquez sur « Appliquer » (le bouton bleu en bas de la fenêtre paramètres avancés de Samba)

Enfin refaites un :

utilisateurLambda@Bureau:~$ sudo mount -a

et là de mon côté, les problèmes étaient résolu…