Comment monter un partage réseau d’un Windows vers Linux en ligne de commande ? Nous allons voir plusieurs solution, notamment la possibilité d’utiliser cifs et smbclient pendant l’exécution de la machine usr laquelle on travaille ou encore le montage au démarrage avec fstab.
Ci-dessous, le réseau que je vais utiliser. Il s’appelle LAB1 et on trouve dessus un serveur Windows ainsi que des serveurs Linux. Je vais utiliser le serveur Linux pour monter le partage réseau qui se trouve sur le serveur Windows avec l’IP 192.168.30.254 et le nom du partage qui est « plinux ».
Je vais donc créer un dossier sur le serveur Windows que je vais appeler « plinux » pour partage Linux et il sera accessible au vu des droits ci-dessous à tous les utilisateurs du domaine Active Directory, donc je devrais indiquer un utilisateur de l’annuaire AD pour me connecter et accéder au partage.
1 – CIFS : Monter un partage réseau pendant l’exécution
La première étape pour utiliser cifs, c’est déjà de l’installer, rien de plus simple, on va installer le paquet cifs-utils.
sudo apt-get install cifs-utils
Pour continuer dans la démonstration, je vais créer un dossier qui me servira de point de montage par la suite. C’est donc dans ce dossier que l’on va monter le partage réseau et qu’on pourra donc manipuler les fichiers et dossiers du partage réseau distant.
Je vais le faire dans le répertoire /mnt et je vais créer un dossier que je vais appeler srv-windows pour indiquer qu’il s’agit du partage du serveur Windows.
sudo mkdir -p /mnt/srv-windows
Maintenant, il est temps de monter le partage réseau distant avec Cifs. Pour cela, nous avons plusieurs paramètres à renseigner comme on peut le voir sur la commande ci-dessous.
sudo mount.cifs //192.168.30.254/plinux /mnt/srv-windows -o username='albert.pichot',password='AlP75!chot'
Explication de la commande :
- sudo : Exécute la commande avec les privilèges de superutilisateur
- mount.cifs : Utilise l’utilitaire mount.cifs pour monter un partage CIFS/SMB
- //192.168.30.254/plinux : Indique l’adresse du serveur et le nom du partage que vous souhaitez monter
- /mnt/srv-windows : Point de montage local où le partage CIFS/SMB sera accessible.
- -o username=’albert.pichot’,password=’AlP75!chot’ : -o indique que des options supplémentaires seront fournies pour le montage et on indique les informations d’identification pour accéder au partage qui se trouve sur le serveur distant.
Notre partage réseau doit être monté maintenant, nous allons aller vérifier cela avec plusieurs commande :
- cd pour accéder au dossier de partage
- ls -l pour vérifier le contenu (et donc s’assurer que l’on accède aux fichiers et dossiers partagés)
- mkdir pour tester la création d’un nouveau dossier dans le partage
- echo pour envoyer du texte dans un fichier sur le partage
cd /mnt/srv-windows
ls -l
mkdir dossier
echo "Boujour" > fichier.txt
Maintenant que l’on sait que notre partage réseau est fonctionnel, on va démonter le partage avec la commande umount. Notre partage ne sera plus accessible après, sinon il faudra le remonter.
umount /mnt/srv-windows
1.1 – CIFS : Utiliser un fichier credentials pour masquer le mot de passe utilisateur
L’objectif d’un fichier credentials est de stocker des informations d’identification pour nos utilisateurs sans avoir besoin de renseigner le login et le mot de passe en clair comme dans la commande de l’étape précédente.
A la place de renseigner le login et le mot de passe, on indique le fichier credential qui contient le login et le mot de passe pour établir la connexion. Bien entendu, ce fichier est accessible uniquement au propriétaire qui l’a créé pour éviter que d’autre personnes est accès au fichier.
Dans un premier temps, nous allons créer le fichier dans le répertoire /etc/samba (le paquet pour le partage réseau) que je vais appeler « creds ».
sudo nano /etc/samba/creds
Dans ce dernier, je vais ajouter les informations de connexion de mon utilisateur albert.pichot.
username=albert.pichot@numelion.local
password=AlP75!chot
Puis je protège le fichier en donnant les permissions de lecture et d’écriture uniquement au propriétaire avec la commande chmod.
sudo chmod 600 /etc/samba/creds
Je refais ma commande en utilisant cette fois le fichier credential plutôt que le login et le mot de passe en clair.
sudo mount.cifs //192.168.40.254/plinux /mnt/plinux -o credentials=/etc/samba/creds,vers=3.0
2 – SMBCLIENT : Monter un partage réseau
Nous avons vu comment utiliser cifs pour monter un partage réseau Linux, mais on peut aussi accéder au partage réseau avec un paquet comme smbclient, c’est un peu particulier, car ce dernier va nous lancer un prompt dans lequel nous allons devoir utiliser les commandes propres à smbclient.
Première étape, installer smbclient avec la commande ci-dessous :
sudo apt-get install smbclient
Ci-dessous la commande de connexion avec smbclient, on renseigne donc l’adresse du partage réseau puis le login de l’utilisateur qui va se connecter. Il s’agit ici d’un utilisateur de mon domaine Active Directory.
smbclient //192.168.40.254/plinux -U albert.pichot
2.1 – SMBCLIENT : Tableau des options pour la commande
Ci-dessous un tableau des options que l’on peut utiliser dans la commande :
smbclient //serveur/partage | Se connecter à un partage smb sur le serveur spécifié |
-U utilisateur | Spécifie l’utilisateur pour se connecter |
-L //serveur | Liste tous les partages disponibles sur le serveur |
-N | Ne pas demander de mot de passe |
-c | Permet d’exécuter des commandes smb à partir de la ligne de commande |
-d niveau_debug | Définit le niveau de débogage (1-10) |
-W domaine | Spécifie le domaine pour l’authentification |
-p port | Spécifie le port à utiliser (par défaut 445) |
-I adresse_ip | Spécifie l’adresse IP du serveur |
-m max-protocole | Définit la version maximale du protocole |
-Tca fichier.tgz | Crée une archive tar à partir d’un partage smb |
-Tc fichier.tgz | Extraire une archive tar vers un partage smb |
Une fois connecté, on a un prompt comme celui ci-dessous qui apparaît pour faire les manipulations des éléments dans le partage réseau.
Exemple de commandes que l’on va utiliser dans la démonstration :
##### Voir le contenu du répertoire courant
ls
##### Créer un dossier qui va se nommer dossier
mkdir dossier
##### Se déplacer dans le dossier
cd dossier
##### Télécharger un fichier "tel.txt" depuis le répertoire la machine Linux vers le partage réseau
put tel.txt
##### Se déplacer sur la machine Linux dans un autre répertoire
lcd /home/srv/smb
##### Exporter un fichier smb.txt du partage réseau vers notre machine Linux
get smb.txt
##### Renommer le fichier tel.txt en download.txt
rename tel.txt download.txt
2.2 – SMBCLIENT : Tableau des commandes
Ci-dessous un tableau des principales commandes pour smbclient :
cd | Change le répertoire courant en parcourant le partage réseau |
ls | Liste les fichiers dans le répertoire courant du partage |
get | Télécharge un fichier du partage vers la machine locale |
put | Télécharge un fichier de la machine locale vers le partage |
mkdir | Créer un répertoire dans le partage distant |
rmdir | Supprime un répertoire vide sur le partage distant |
del | Supprime un fichier sur le partage |
lcd | Change le répertoire courant local, donc sur la machine locale |
rm | Supprimer le fichier spécifié sur le partage |
mput | Copier tous les fichiers correspondant à des critères données sur le partage |
mget | Copier tous les fichiers correspondant à des critères données sur la machine locale |
help | Obtenir de l’aide sur les comandes |
exit | Quitte smbclient |
3 – FSTAB : Monter un partage réseau au démarrage
Maintenant, voyons comment monter un partage réseau au démarrage de notre machine Linux. Pour cela, nous allons ajouter une ligne dans le fichier fstab.
Fstab est un fichier qui contient les informations sur les différents systèmes de fichiers et partitions à monter automatiquement au démarrage, cela tombe bien, c’est ce qu’on recherche.
Pour cela, il faut avoir installé cifs-utils, pour rappelle, on utilise la commande ci-dessous :
apt-get install cifs-utils
Je vais ensuite créer le dossier dans lequel le partage réseau sera monté au démarrage :
mkdir /mnt/partage
Maintenant que tout est prêt, on va éditer le fichier fstab avec la commande ci-dessous :
sudo nano /etc/fstab
Dans ce dernier,il faut ajouter une ligne comme celle ci-dessous :
//adresse-serveur/nom-partage /adresse-dossier/partage cifs username='nom de l'utilisateur',password='mot de passe de votre utilisateur',iocharset=utf8 0 0
Explications des paramètres :
- //adresse-serveur/nom-partage : l’adresse du serveur et le nom du partage que l’on souhaite monter.
- /adresse-dossier/partage : C’est le point de montage sur notre système local Linux où le partage réseau sera accessible.
- cifs : Indique le type de système de fichiers à utiliser pour le montage.
- username=’nom de l’utilisateur’,password=’mot de passe de votre utilisateur’ : login et mot de passe de l’utilisateur
- iocharset=utf8 : Option pour définir le jeu de caractères, ici UTF-8, ce qui permet de gérer correctement les noms de fichiers avec des caractères spéciaux.
- 0 : Ce champ indique si le système de fichiers doit être sauvegardé par la commande dump. 0 signifie qu’il ne doit pas être sauvegardé.
- 0 : Ce champ définit l’ordre dans lequel fsck (file system check) doit vérifier le système de fichiers au démarrage. 0 signifie qu’il ne doit pas être vérifié.
Voici la ligne avec mes propres paramètres :
//192.168.40.254/plinux /mnt/partage cifs username='albert.pichot',password='AlP75!chot',iocharset=utf8 0 0
Mais rassurez-vous, on peut aussi utiliser les credentials pour éviter que le login et le mot de passe soient en clair dans le fichier
//192.168.40.254/plinux /mnt/partage cifs credentials=/etc/samba/creds,iocharset=utf8 0 0
Une fois que l’édition de fstab est terminé, on peut vérifier immédiatement que la configuration est bonne avec la commande « mount -a » qui monte ce qui n’a pas encore été monté comme partage dans fstab puis on vérifie le dossier de partage pour s’assurer que cela fonctionne :
sudo mount -a
ls /mnt/partage
Il ne nous reste plus qu’a redémarrer la machine Linux pour s’assurer que le montage est bien présent :
reboot
ls /mnt/partage