{{tag>Xenial partage samba tutoriel windows}}
====== Monter des partages Windows au démarrage ======
Ubuntu permet de se connecter à un dossier partagé sur un PC fonctionnant avec Windows de manière très simple, //via// la commande « Se connecter au serveur » du menu Raccourcis de Nautilus.
De manière générale, les gestionnaires de fichiers en mode graphique permettent d’accéder aux partages via smb://adresse_du_serveur
ou en passant par la section « Réseaux ».
On peut cependant vouloir effectuer un montage permanent de ce type de ressource.
Pour ce faire, il y a trois méthodes. La, première classique et simple, consiste à utiliser le fichier fstab de montage des partitions. \\
La seconde, plus avancée et utilisant la bibliothèque libpam-mount, est un peu plus complexe, mais offre en contre partie beaucoup plus de possibilités.\\
Enfin la dernière s'appuie sur systemd et ses unités de montage.
__Remarques__ : On pourra se reporter avec intérêt aux pages \\
[[https://help.ubuntu.com/community/MountSAMBAshareFSTAB]]\\
[[https://wiki.ubuntu.com/MountWindowsSharesPermanently]] \\
[[https://help.ubuntu.com/community/MountWindowsSharesPermanently]]\\
[[:mount_fstab|mount et fstab : Le montage des systèmes de fichiers]] \\
===== 1ère méthode : l’utilisation du fichier fstab =====
==== Installation des paquets nécessaires ====
[[:tutoriel:comment_installer_un_paquet|Installez le paquet]] suivant : **[[apt>cifs-utils]]** sur votre système s'il ne l'est pas déjà. Il ne fait pas partie des paquets installés par défaut.
==== Monter les partages distants ====
Dans une console tapez la commande suivante :
sudo mkdir /media/partage
pour créer le répertoire de montage local des fichiers distants. Ce répertoire peut aussi être placé dans le répertoire par défaut /mnt mais il n’y aura pas de raccourci direct dans nautilus. Et en principe /mnt est dédié aux montages temporaires.
Avant tout, il est conseillé de commencer par vérifier que vous arrivez bien à monter le partage en ligne de commande, exemple :
sudo mount -t cifs -o username=utilisateur_ubuntu,rw,iocharset=utf8,file_mode=0660,dir_mode=0770 //adressIP_serveurFichier/repertoireSource /media/partage
si vous n’avez besoin que d’un accès en lecture, c'est plus simple :
sudo mount -t cifs -o guest,iocharset=utf8 //adressIP_serveurFichier/repertoireSource /media/partage
On crée ensuite un fichier dans lequel on stocke l’identifiant et le mot de passe pour se connecter sur le PC distant. Le but de cette création est de faire en sorte que l'identifiant et le mot de passe n'apparaissent pas directement dans le fichier fstab, qui, par défaut, est accessible en lecture par tout utilisateur. C'est le minimum à faire pour limiter la visibilité des mots de passe.
Pour créer le fichier et l’ouvrir avec [[:nano|nano]] il suffit de saisir dans un [[:terminal]] la ligne suivante :sudo nano /root/.smbcredentials
Dans ce fichier, ajouter les trois lignes suivantes :
username=MonNom
password=MonMotDePasse
domain=DOMAINE
Enregistrez ce fichier (Ctrl+O).
==== Modifier le fichier fstab de montage des partitions ====
**Note :** avant d'effectuer toute modification du fichier ''/etc/fstab'', pensez à en faire une **copie de sauvegarde** ! Cela peut être fait grâce à la commande suivante, exécutée dans un terminal : sudo cp /etc/fstab /etc/fstab_sauvegarde
Pour restaurer cette copie de sauvegarde, en cas de besoin, exécutez la commande inverse : sudo cp /etc/fstab_sauvegarde /etc/fstab
Pour l’exemple on va supposer que les paramètres sont les suivants :
* Adresse IP du PC distant : 192.168.1.2
* Nom du partage auquel on veut accéder : Partage
* Dossier local où on va monter ce partage : /media/partage
Ouvrez le fichier /etc/fstab :
sudo nano /etc/fstab
et ajoutez-y une ligne de ce type : //(L’option **iocharset=utf8** permet l’utilisation du jeu de caractères UTF-8, ce qui corrige les problèmes de noms de dossiers et fichiers accentués)//.
//192.168.1.2/Partage /media/partage cifs credentials=/root/.smbcredentials,iocharset=utf8 0 0
Ou :
//192.168.1.2/Partage /media/partage cifs guest,iocharset=utf8 0 0
si le PC distant est sous windows et ne nécessite pas d’identification.
Le fichier credentials peut ne pas suffire à avoir accès en écriture, il faut alors ajouter l’utilisateur qui se connecte et les droit chmod sur les répertoire et fichiers :
//192.168.1.2/Partage /media/partage cifs uid=nom_utilisateur_ubuntu,dir_mode=0777,file_mode=0666,credentials=/root/.smbcredentials,iocharset=utf8 0 0
Dans le cas d’un __**partage dont le nom contient une espace**__, ajouter la ligne comme ceci :
//192.168.1.2/Partage\040avec\040une\040espace /media/partage cifs credentials=/root/.smbcredentials,iocharset=utf8 0 0
Ou encore :
//192.168.1.2/Partage\040avec\040une\040espace /media/partage cifs guest,iocharset=utf8 0 0
\040 étant le code octal pour une espace.
Dans le cas d’un __**partage dont le nom contient des parenthèses**__ (cas d’un lecteur partagé), les codes octaux sont respectivement **050** et **051** pour **(** et **)**.
Sauvegardez le fichier : au prochain démarrage, vous aurez accès à vos fichiers dans toutes vos applications.
Cette méthode est efficace, robuste et simple à mettre en œuvre, mais elle souffre de quelques limitations. Elle impose de stocker des mots de passe en clair dans un fichier, et surtout, elle ne permet pas d’utiliser des paramètres différents en fonction de l’utilisateur qui se connecte et donc empêche de profiter des mécanismes de gestion des droits d’accès que les versions récentes de Windows permettent (à partir de Windows 2000). Pour remédier à cela, il existe une autre solution.
=== Permissions et appropriation des fichiers et répertoires ===
[[http://manpages.ubuntu.com/manpages/utopic/en/man8/mount.cifs.8.html|traduit de la page ubuntu.com sur les options cifs]]\\
Le protocole CIFS ne fournit pas d'informations UNIX sur le propriétaire et les permissions pour les fichiers et répertoires. De ce fait, les fichiers et répertoires sont définis par les valeurs associées aux options //uid=// et //gid=// , et aux permissions définies par les options //file_mode// et //dir_mode// lors du montage. Tenter de modifier ces valeurs avec chmod/chown fonctionne mais est sans effet.\\
Quand le client et le serveur négocient les extensions UNIX, les fichiers et répertoires seront affectés aux valeurs //uid//, //gid// et mode défini par le serveur. Comme le montage CIFS est généralement utilisé par un utilisateur unique avec le même "//credentials//", les nouveaux fichiers et répertoires créés lui sont associés quelque-soit le "//credentials//" utilisé lors du montage.\\
Si les options //uid// et //gid// utilisées ne correspondent pas entre le client et le serveur, les options //forceuid// et //forcegid// peuvent être utiles. Notez cependant qu'il n'y a pas d'équivalent pour le mode, ce qui entraîne que les permissions affectées à un fichier (ou répertoire) affecté par //uid/gid// ne correspondent pas forcément aux véritables autorisations!\\
Quand les extensions UNIX ne sont pas négociées, il est également possible de les émuler localement sur le serveur en utilisant l'option de montage "//dynperm//". Si cette option est active, les nouveaux fichiers et répertoires recevront des permissions appropriées… mais en général, cette option est déconseillée.\\
Il est aussi possible de remplacer les permissions sur le client via l'option "//noperm//". Les contrôle de permissions réalisées côté serveur ne peuvent pas être remplacées. Elle correspondent toujours au "//credentials//" utilisées lors du montage et non à l'utilisateur qui accède au partage.
===== 2ème méthode : utilisation de la bibliothèque libpam-mount =====
==== Installation des paquets nécessaires ====
[[:tutoriel:comment_installer_un_paquet|Installez le paquet]] suivant : **[[apt>libpam-mount, cifs-utils]]** sur votre système s'il ne l'est pas déjà. Ils ne fait pas partie des paquets installés par défaut.
==== Édition du fichier indiquant les partages à monter ====
Ouvrez le fichier **/etc/security/pam_mount.conf.xml** :
sudo nano /etc/security/pam_mount.conf.xml
C’est ici qu’on va trouver toutes les options de configuration permettant d’indiquer quels partages on va monter et de quelles manières.
Toutes les parties de ce fichier qui commencent encadrés par sont en fait des commentaires ou des options inactives.
La lecture de ces commentaires est utile, car ils vous permettront de comprendre un peu mieux l’utilisation générale de ce système qui ne se limite pas à ce que nous en faisons ici.
=== Debug et création des répertoires ===
Dans ce fichier, on trouve entre autres, ces options :
La première active le mode //debug// quand on la met à 1. Cela permet d’avoir des messages de retour de l’utilisation. Ce n’est réellement utile que lorsqu’on l’utilise en mode console, mais on peut la laisser à sa valeur par défaut.
La deuxième est une option qui permet, quand sa valeur est à 1, de créer automatiquement les répertoires où l’on va monter nos dossiers partagés. Là, c’est à vous de voir. Mais faites attention : si vous la mettez à 0, n’oubliez pas d'aller créer les dossiers nécessaires ultérieurement.
=== Montage de partage spécifique à l'utilisateur ===
Pour cela il vous faut utiliser l'otion :
Si vous dé-commentez cette ligne (en supprimant ), le nom du fichier que vous mettrez à la suite de cette option sera utilisé pour paramétrer des partages spécifiques à l’utilisateur. Ce fichier sera à placer dans le répertoire personnel de l’utilisateur en question et devra contenir des directives volumes comme nous le verrons plus loin.
=== Gestion des options autorisées/interdites/obligatoires ===
Les options suivantes qui nous sont utiles sont :
En général, elles seront mises ou laissées en commentaires. Elles permettent d’indiquer quelles options seront interdites, requises et autorisées parmi celles disponibles plus loin dans la directive volume (lisez les commentaires qui les accompagnent si vous voulez vous en servir). Sachez que les options qu’elles concernent sont à rapprocher des options de la commande mount.cifs (qui est utilisée de toute façon ici de manière transparente).
=== Directives de montages des partages ===
Voici enfin le point crucial : la création des directives de montage des dossiers distants, par l’indication des directives volumes. La syntaxe d’une telle option pour le montage de volume via [[:samba|smb]] est la suivante :
La signification de chaque élément est la suivante :
| **user** |nom d'utilisateur à utiliser pour se connecter. Un mécanisme de joker est disponible pour\\ une utilisation générique (voir plus loin). |
| **fstype** |Type du système de fichier, dans notre cas toujours cifs. |
| **server** |nom ou adresse IP du poste distant sur lequel se situe le partage auquel on veut accéder. |
| **path** |nom du partage tel qu'il est défini sur le PC Windows distant. |
| **mountpoint** |chemin complet vers le répertoire où l’on veut monter le partage, en fonction de la valeur\\ que l’on a donné à l’option mkmountpoint. Ce dossier sera créé automatiquement ou non. |
| **uid** |la plage d'UID utilisateur autorisé à monter ce volume. |
| **options** |les options disponibles pour le montage de ce répertoire. |
=== Les variables de substitution ===
Les variables suivantes peuvent être utilisées :
| %(USER) | substituée par le nom de l'utilisateur au moment de la connexion |
| %(GROUP¨) | substituée par le groupe de l'utilisateur au moment de la connexion |
| %(USERUID), %(USERGID) | substituées respectivement par l'UID et le GID de l'utilisateur|
| %(USERUID), %(USERGID) | substituées respectivement par l'UID et le GID de l'utilisateur|
=== Les options de montage ===
Les options de montage disponibles sont en fait celles de la commande mount.cifs. Voyez les pages man de cette commande si vous voulez en savoir plus :
man mount.cifs
===== 3ème méthode : systemd =====
[[:systemd]] permet aussi de monter des espaces de stockages distants soit au démarrage du système, soit à la demande (automount)
Le montage à la demande est effectué dès qu'un utilisateur tente d’accéder au point de montage.
Il existe pour ceci 2 types d'unité : //mount// et //automount//.
Avec les [[:sudo|droits d'administration]], [[:tutoriel:comment_modifier_un_fichier|créez un fichier]] dans le répertoire ''/etc/systemd/system/'' qui aura le nom du chemin dans lequel vous voulez monter le stockage, avec l'extension ''.mount'' en remplaçant les ''/'' par des ''-''. Par ex. pour ''/media/monserveur/partage'' le fichier sera ''/etc/systemd/system/media-monserveur-partage.mount''. Il contiendra ceci :
[Unit]
Description=partage
StartLimitIntervalSec=0
[Mount]
Type=cifs
What=//monserveur/partage
Where=/media/monserveur/partage
Options=uid=0,credentials=/root/.smb,iocharset=utf8,vers=3.0
TimeoutSec=10
[Install]
WantedBy=multi-user.target
Ce fichier est à adapter. Il permet de définir le point de montage, ainsi que les options liées à SMB/CIFS (en particulier concernant les permissions). Ici les identifiants d'accès sont définis dans un fichier ''/root/.smb'' (voir //[[:samba#montage_automatique|SMB credentials]]//).
Pour le montage à la demande, il faut créer une deuxième unité du type ''automount'', en créant un autre fichier au même endroit, avec le même nom, mais l'extension ''.automount''. Cet autre fichier aura le contenu suivant :
[Unit]
Description=Automount partage
[Automount]
Where=/media/monserveur/partage
[Install]
WantedBy=multi-user.target
Pour avoir un montage automatique au démarrage, il faut d'activer uniquement l'unité de montage :
sudo systemctl enable media-monserveur-partage.mount
Pour avoir un montage automatique à la demande, il faut activer uniquement l'unité automount
sudo systemctl enable media-monserveur-partage.automount
===== Que faire en cas de problèmes ? =====
S’il y a des erreurs au démarrage, vous pouvez les retrouver dans le fichier **syslog** qui se trouve dans **/var/log**
Comme on intervient sur les paramètres d’authentification, si vous faites une erreur dans un des fichiers de configuration, il est possible que vous ne puissiez plus vous connecter par la suite : dans ce cas, que faire ?
==== 1ère méthode ====
Le plus simple est de démarrer en mode "rescue". Pour cela, appuyez sur la touche "esc" au démarrage du Linux, lors du chargement de GRUB. Vous pourrez alors choisir le mode "failsafe" qui ouvre une session mono-utilisateur en tant que root. Vous pourrez ainsi modifier les fichiers dans /etc/pam.d sans trop de problèmes.
==== 2ème méthode ====
Si vous êtes bricoleur et que vous avez la patience, vous pouvez utiliser un LiveCD d’une distribution Linux, notamment celui d’Ubuntu. Une fois que vous avez démarré avec le LiveCD, montez votre partition système dans le répertoire de votre choix, puis allez re-modifier les fichiers de configuration. Si vraiment plus rien ne marche, la première chose à faire est de commenter (en mettant un # devant) la ligne @include common-pammount du fichier /etc/pam.d/gdm. Cela vous permettra au moins de pouvoir vous connecter normalement.
Contributeurs: [[utilisateurs:LordPhoenix]], [[utilisateurs:bcag2]]