Created by potrace 1.13, written by Peter Selinger 2001-2015 image/svg+xml Site Yann
  • Archives
  • Documents
  • Aide

Partage de fichiers avec Samba

  • samba
  •  30 sept. 2020 16 nov.  2020

Partage hôte linux et invité windows

Partager des fichiers sur votre hôte Linux avec un invité Windows en utilisant Samba

Voici un moyen simple et rapide de partager des fichiers sur votre hôte linux avec un invité Windows en utilisant la samba. Cela peut être utile pour de nombreuses raisons, car vous aurez probablement besoin d’accéder à des fichiers sur votre hôte à partir de votre invité à un moment donné.
La seule condition est que samba soit installé sur votre hôte. Cette procédure est également spécifique à l’exécution de guest en utilisant le mode de mise en réseau par défaut qui est la mise en réseau en mode utilisateur.

Samba

Archlinux
Installation du paquet samba.
Le fichier de configuration de Samba est à l’emplacement /etc/samba/smb.conf et est abondamment documenté dans le man 5 smb.conf
Comme le paquet samba ne fournit pas ce fichier, il vous faut le créer avant de lancer le service smb.
Un exemple documenté, qui se trouve en tant que smb.conf.default dans le dépôt git Samba peut servir à la configuration dans /etc/samba/smb.conf.

Vérifier si samba est installé

pacman -Qqe |grep samba

Si non, installer samba

sudo pacman -S samba

Debian
Installation

sudo apt install smbclient  cifs-utils

Configurer le partage samba sur votre hôte

Tout samba peut être configurée dans un fichier appelé smb.conf.
Créer le fichier /etc/samba/smb.conf

sudo nano /etc/samba/smb.conf

Copiez le contenu de la Sample Configuration from Samba Git Repo et collez-le dans le fichier ci-dessus.

Pour une meilleure sécurité, fournir les versions min et max du protocole, ajouter des protocoles dans la section globale. (FACULTATIF)

[global]
server min protocol = NT1
server max protocol = SMB3

Définir un groupe de travail, vous pouvez définir votre propre nom de groupe de travail, je l’ai défini WINTEN

workgroup = WINTEN

Définir la description du serveur, cela est visible lorsque l’on interroge le serveur depuis le client Samba, le nom d’hôte de mon PC est PC-ARCHLINUX

server string = Samba Server PC-ARCHLINUX

Changez le chemin d’accès par défaut du fichier journal, car il n’est pas inscriptible, mettez-le à

# chemin R/W
#log file = /var/log/samba/%m.log
# journalisation systemd
logging = systemd

Restreindre le partage des répertoires d’origine, ajouter avant chaque ligne de la section [homes].

;[homes]
;comment = Home Directories
;browseable = no
;writable = yes

A la fin du fichier, décommentez la section [myshare] et changez-la si nécessaire, c’est le nom de partage qui apparaît sur le client, j’ai changé [myshare] en [PartageLinux]

[PartageLinux]
   comment = PC-ARCHLINUX Shared Files
   path = /mnt/partage
   valid users = yannick
   public = no
   writable = yes
   printable = no
   create mask = 0765

[Publique]
   hosts allow = 192.168.1. 127.0.0.1
   comment = Partage publique
   path = /home/yannick/Public
   available = yes
   browsable = yes
   public = yes
   writable = yes

Si plusieurs utilisateurs, séparés par un espace ex: yannick anyotheruser1 anyotheruser2

Fichier final /etc/samba/smb.conf

[global]
   server min protocol = NT1
   server max protocol = SMB3
   dns proxy = No
   logging = systemd
   server role = standalone server
   server string = Samba Server PC-ARCHLINUX
   workgroup = WINTEN
   idmap config * : backend = tdb
   hosts allow = 192.168.0. 127.

[PartageLinux]
   comment = PC-ARCHLINUX Shared Files
   path = /mnt/partage
   valid users = yannick eeepc
   available = yes
   read only = no
   browseable = yes
   public = yes
   writable = yes

Le serveur Samba exige que l’utilisateur accède aux répertoires partagés par les utilisateurs si ceux-ci ne sont pas publics.
Samba partage le nom d’utilisateur du système linux mais conserve son propre mot de passe.
Nous n’avons donc pas besoin d’ajouter l’utilisateur mais nous allons ajouter un mot de passe dans la liste Samba.

sudo smbpasswd -a yannick

Tapez votre mot de passe et entrez

Vous pouvez changer de mot de passe ultérieurement en utilisant

sudo smbpasswd yannick

Créer le répertoire partagé

Vous vous souvenez que nous avons créé une section [partagée] dans le fichier smb.conf ? Nous y avons configuré le chemin d’accès pour le répertoire partageable

[PartageLinux]
   comment = PC-ARCHLINUX Shared Files
   path = /mnt/partage

Créer un répertoire partagé dans /mnt/partage

sudo mkdir -p /mnt/partage

Changer la propriété du fichier à l’utilisateur qui a été ajouté dans samba, dans mon cas c’était yannick, attribuer la propriété à yannick pour le répertoire /mnt/partage

sudo chown -R yannick:users /mnt/partage
sudo chmod 770 /mnt/partage

Démarrer maintenant le serveur Samba

sudo systemctl start smb.service
sudo systemctl start nmb.service

Vous pouvez les paramétrer pour un démarrage automatique au démarrage du système

sudo systemctl enable smb.service
sudo systemctl enable nmb.service

Félicitations, votre serveur samba est opérationnel, vous pouvez maintenant accéder aux dossiers partagés de votre serveur linux depuis n’importe quel autre PC, y compris Windows. Pour y accéder sous linux, vous devez avoir le client samba et monter le répertoire réseau.

Après toutes modifications

sudo systemctl restart nmb.service smb.service 

Tester la configuration

sudo testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
	dns proxy = No
	logging = systemd
	server min protocol = NT1
	server role = standalone server
	server string = Samba Server PC-ARCHLINUX
	workgroup = WINTEN
	idmap config * : backend = tdb
	hosts allow = 192.168.0. 127.
    create mask = 0770

[PartageLinux]
	comment = PC-ARCHLINUX Shared Files
	guest ok = Yes
	path = /mnt/partage
	read only = No
	valid users = yannick eeepc

Accès partage hôte depuis windows

Ouvrez l’Explorateur de fichiers (1) et cliquez avec le bouton droit de la souris sur Ce PC (2) (dans le volet de gauche). Dans le menu contextuel résultant, sélectionnez Add a network location

sambawin

Un nouvel assistant s’ouvrira, qui vous guidera dans le processus de création d’un raccourci pour un nouvel emplacement réseau dans l’explorateur de fichiers. Cliquez sur Next dans la fenêtre de bienvenue. Dans l’écran résultant, cliquez sur Choose a custom network location (la seule option), puis cliquez sur Next.

sambawin

Ensuite, vous devez entrer l’adresse IP de votre serveur Samba sous la forme \SERVER_IP\SHARE (où SERVER_IP est l’adresse IP de votre serveur Samba et SHARE est le nom du partage que vous voulez ajouter).

sambawin
sambawin

Cliquez sur Next pour continuer. Dans la fenêtre suivante, saisissez un nom pour l’emplacement du réseau. Un nom par défaut sera récupéré par le serveur Samba, vous pouvez soit l’utiliser, soit saisir un nom personnalisé qui vous permettra de vous souvenir plus facilement de l’emplacement du partage ou de ce qui y est hébergé.

sambawin
Cliquer sur Finish

sambawin

Accès partage hôte depuis linux

Une version minimale de smb.conf est nécessaire pour faire fonctionner les outils clients

sudo apt install smbclient

Pour avoir la liste des machines du voisinage réseau :

smbclient -L nom_DNS_ou_NetBIOS_du_contrôleur_de_domaine -U login_Windows

Pour voir les partages de l’ordinateur ordi1 :

smbclient -L ordi1 -U login_Windows

Pour télécharger le fichier fichier1.txt disponible dans le partage partage1 de l’ordinateur ordi1 :

    $ smbclient //ordi1/partage1 -U login_Windows
    smb: \> ls
    smb: \> cd répertoire_distant
    smb: \> lcd répertoire_local
    smb: \> get fichier1.txt
    smb: \> quit

Pour imprimer le fichier PostScript fichier2.ps sur l’imprimante printer2 partagée par l’ordinateur ordi2 :

    $ smbclient //ordi2/printer2 -U login_Windows
    smb: \> print fichier2.ps
    smb: \> quit

Pour déposer le fichier fichier3.txt sur le partage incoming partagée en écriture par l’ordinateur ordi3 :

    $ smbclient //ordi3/incoming -U login_Windows
    smb: \> put fichier3.txt
    smb: \> quit

Pour changer son mot de passe du voisinage réseau Windows :

$ smbpasswd -r nom_DNS_ou_NetBIOS_du_contrôleur_de_domaine -U login_Windows

Monter un partage du voisinage réseau

Installer le paquet cifs-utils

sudo apt install cifs-utils

Montage manuel dans le répertoire /Point/de/montage/ déjà existant :

sudo mount -t cifs //IP_Serveur/Nom_de_partage /Point/de/montage -o user=utilisateur,password=mot_de_passe

Quand vous n’en n’avez plus besoin, vous pouvez démonter le système de fichiers :

sudo umount /mnt/test

Montage automatique
Avec les droits administrateur créez un fichier contenant les paramètres d’authentification du partage.

/Chemin/Vers/share_auth
username=utilisateur
password=mot_de_passe

Vous pouvez également ajouter un domaine domain= Pour sécuriser ces informations, il faut que le contenu du fichier soit visible et modifiable uniquement par l’administrateur.

sudo chmod 600 /Chemin/Vers/share_auth

Dans /etc/fstab:

//IP_Serveur/Nom_de_partage /Point/de/montage cifs credentials=/Chemin/Vers/share_auth 0 0

Limiter l’accès (utilisateurs,sous-réseau)

Comment puis-je limiter l’accès à des utilisateurs particuliers ou à un sous-réseau tel que le 192.168.2.1/24 ?

Vous pouvez utiliser des wrappers tcp pour limiter l’accès au sous-réseau via :

  1. /etc/hosts.allow - Ce fichier décrit les noms des hôtes qui sont autorisés à utiliser les services INET locaux, comme décidé par le serveur /usr/sbin/tcpd.
  2. /etc/hosts.deny - Ce fichier décrit les noms des hôtes qui ne sont PAS autorisés à utiliser les services INET locaux, selon la décision du serveur /usr/sbin/tcpd.

Par exemple, autoriser l’accès au service smbd à l’intérieur du réseau local uniquement via /etc/hosts.allow :

smbd : 192.168.2.

Cependant, samba peut ou non être construit pour supporter les wrappers tcp.{:.warning}

Configurations de Samba

hosts allow

Ouvrez votre fichier smb.conf et ajoutez la ligne suivante à [share]

[share]
  hosts allow = 192.168.2. 127.0.0.1

utilisateurs valides

Ouvrez votre fichier smb.conf et ajoutez la ligne suivante à [share]

[share]
  valid users = user1 user2 @group1 @group2

lecture et écriture seulement

Vous pouvez également définir l’accès en lecture et en écriture à un ensemble d’utilisateurs avec les directives de liste de lecture et de liste d’écriture.

[share]
     read only = yes
     write list = user1 user2 @group1 @group2

Exemples

Faites en sorte que le partage des ventes ([sales]) soit en lecture seule mais permettre l’écriture aux utilisateurs Tom et Jerry

[sales]
     comment = All Printers
     path = /nas/fs/sales
     read only = yes
     write list = tom jerry
PRÉCÉDENTInfluxDB Telegraf Grafana
SUIVANTVirtualisation Linux (chroot,lxc,docker,kvm qemu),libvirt et virsh
Recherche