Dans ce tutoriel, nous allons apprendre à installer et configurer un serveur samba sur CentOS 8/RHEL8 pour partager des fichiers sur le réseau local. Samba est une implémentation de protocole SMB/CIFS gratuite et open-source pour Unix et Linux qui permet le partage de fichiers et d'impressions entre des machines Linux, Windows et macOS dans un réseau local.
Samba est généralement installé et exécuté sous Linux. Il comprend plusieurs programmes qui servent des objectifs différents mais liés, dont les deux plus importants sont :
- smbd :fournit un service SMB/CIFS (partage de fichiers et impression), peut également agir en tant que contrôleur de domaine Windows.
- nmbd :Ce démon fournit le service de noms NetBIOS, écoute les requêtes du serveur de noms. Cela permet également au serveur Samba d'être trouvé par d'autres ordinateurs du réseau.
Comment installer le serveur Samba sur CentOS 8/RHEL8
Samba est inclus dans la plupart des distributions Linux. Pour installer Samba sur CentOS 8/RHEL8, exécutez la commande suivante dans le terminal.
sudo dnf install samba
Pour vérifier votre version de Samba, exécutez
smbd --version
Exemple de sortie :
Version 4.10.4
Lancez ensuite la commande suivante pour démarrer le smbd
et nmbd
services.
sudo systemctl start smb nmb
Activer le démarrage automatique au démarrage.
sudo systemctl enable smb nmb
Pour vérifier si le service Samba est en cours d'exécution, exécutez les commandes suivantes.
systemctl status smb nmb
Une fois lancé, le smb
le démon écoutera sur les ports TCP 139 et 445. Le nmbd
écoutera sur les ports UDP 137 et 138.
- TCP 139 :utilisé pour le partage de fichiers et d'imprimantes et d'autres opérations.
- TCP 445 :le port CIFS sans NetBIOS.
- UDP 137 :utilisé pour la navigation sur le réseau NetBIOS.
- UDP 138 :utilisé pour le service de noms NetBIOS.
Exécutez la commande suivante pour ouvrir les ports ci-dessus dans le pare-feu.
sudo firewall-cmd --permanent --add-service=samba
Rechargez le démon du pare-feu pour que le changement prenne effet.
sudo systemctl reload firewalld
Créer un partage Samba privé
Dans cette section, nous verrons comment créer un partage Samba privé qui nécessite que le client entre un nom d'utilisateur et un mot de passe pour y accéder. Le fichier de configuration principal de Samba se trouve à :/etc/samba/smb.conf
. Vous pouvez le modifier dans le terminal avec un éditeur de texte en ligne de commande comme nano
.
sudo nano /etc/samba/smb.conf
Par défaut, il y a 4 sections :
- mondial
- maisons
- imprimantes
- imprimer$
Dans le [global]
section, le workgroup
est défini sur SAMBA par défaut.
workgroup = SAMBA
Assurez-vous que la valeur de workgroup
est le même avec les paramètres de groupe de travail des ordinateurs Windows. Vous pouvez trouver le paramètre sur votre ordinateur Windows en accédant au Control Panel
> System and Security
> System
.
Dans cet article, j'utiliserai le nom de groupe de travail par défaut de Windows.
workgroup = WORKGROUP
Il est recommandé d'utiliser le hosts allow
paramètre pour créer une liste blanche d'adresses IP afin d'empêcher tout accès non autorisé. Ajoutez la ligne suivante dans le [global]
section, qui autorisera le localhost et les clients dans le 192.168.0.0/24
réseau pour accéder aux services Samba. Si vous utilisez une plage de réseau différente, remplacez 192.168.0
avec le vôtre.
hosts allow = 127. 192.168.0
Astuce :Vous pouvez également utiliser la notation CIDR pour la plage de réseau, comme hosts allow = 127.0.0.1 192.168.0.0/24
Ensuite, faites défiler vers le bas du fichier. (Dans l'éditeur de texte nano, vous pouvez y parvenir en appuyant sur CTRL+W
puis CTRL+V
. ) Ajoutez une nouvelle section comme ci-dessous.
[Private] comment = needs username and password to access path = /srv/samba/private/ browseable = yes guest ok = no writable = yes valid users = @samba
Où :
Private
est le nom du dossier qui sera affiché sur l'ordinateur Windows. Vous pouvez utiliser le nom de votre choix.- Le commentaire est une description du dossier partagé.
- Le paramètre path spécifie le chemin d'accès au dossier partagé. J'utilise
/srv/samba/private/
à titre d'exemple. browseable = yes
:Autoriser les autres ordinateurs du réseau à voir le serveur Samba et le partage Samba. Si défini sur non, les utilisateurs doivent connaître le nom du serveur Samba, puis entrer manuellement un chemin dans le gestionnaire de fichiers pour accéder au dossier partagé.guest ok = no
:Désactiver l'accès invité. En d'autres termes, vous devez entrer le nom d'utilisateur et le mot de passe sur l'ordinateur client pour accéder au dossier partagé.writable = yes
:Accorde à la fois l'autorisation de lecture et d'écriture aux clients.valid users = @samba
:Seuls les utilisateurs du groupe Samba sont autorisés à accéder à ce partage Samba.
Enregistrez et fermez le fichier. (Pour enregistrer le fichier dans l'éditeur de texte nano, appuyez sur Ctrl+O
, puis appuyez sur Entrée pour confirmer le nom du fichier à écrire. Pour fermer le fichier, appuyez sur Ctrl+X
.) Nous devons maintenant créer un utilisateur Samba. Tout d'abord, nous devons créer un compte utilisateur Linux standard avec la commande suivante. Remplacer username
avec le nom d'utilisateur souhaité.
sudo adduser username
Vous serez invité à définir un mot de passe Unix. Après cela, vous devez également définir un mot de passe Samba distinct pour le nouvel utilisateur avec la commande suivante :
sudo smbpasswd -a username
Créer le samba
groupe.
sudo groupadd samba
Et ajoutez cet utilisateur au samba
groupe.
sudo gpasswd -a username samba
Créez le dossier de partage privé.
sudo mkdir -p /srv/samba/private/
La samba
Le groupe doit disposer d'une autorisation de lecture, d'écriture et d'exécution sur le dossier partagé. Vous pouvez accorder ces autorisations en exécutant la commande suivante.
sudo setfacl -R -m "g:samba:rwx" /srv/samba/private/
Nous devons également étiqueter ce répertoire avec samba_share_t
afin que SELinux permette à Samba de lire et d'écrire dessus.
sudo chcon -t samba_share_t /srv/samba/private/ -R
Exécutez ensuite la commande suivante pour vérifier s'il y a des erreurs de syntaxe.
testparm
Les fichiers de configuration de Samba sont automatiquement rechargés toutes les minutes, s'ils changent. Vous pouvez redémarrer manuellement smbd
et nmbd
démon pour que les modifications prennent effet immédiatement.
sudo systemctl restart smb nmb
Comment créer un partage public Samba sans authentification
Pour créer un partage public sans nécessiter de nom d'utilisateur ni de mot de passe, les conditions suivantes doivent être remplies.
- Définir
security = user
dans la section globale du fichier de configuration de Samba. - Définir
map to guest = bad user
dans la section globale du fichier de configuration de Samba. Cela causerasmbd
utiliser un compte invité pour authentifier les clients qui n'ont pas de compte enregistré sur le serveur Samba. Comme il s'agit d'un compte invité, les clients Samba n'ont pas besoin de saisir de mot de passe. - Définir
guest ok = yes
dans la définition de partage pour autoriser l'accès invité. - Accorder l'autorisation de lecture, d'écriture et d'exécution du dossier public à
nobody
compte, qui est le compte invité par défaut.
Ouvrez et modifiez le fichier de configuration Samba.
sudo nano /etc/samba/smb.conf
Dans le [global]
section, assurez-vous que la valeur de workgroup
est le même avec les paramètres de groupe de travail des ordinateurs Windows.
workgroup = WORKGROUP
Vous pouvez trouver le paramètre sur votre ordinateur Windows en accédant au Control Panel
> System and Security
> System
.
Ajoutez la ligne suivante dans le [global]
rubrique.
map to guest = bad user
Ensuite, faites défiler vers le bas du fichier et collez les lignes suivantes.
[public] comment = public share, no need to enter username and password path = /srv/samba/public/ browseable = yes writable = yes guest ok = yes
Enregistrez et fermez le fichier. Ensuite, créez le /srv/public/
dossier.
sudo mkdir -p /srv/samba/public
Vous devez modifier l'autorisation de ce dossier en 777, si vous souhaitez autoriser l'opération d'écriture sur le partage public.
sudo chmod 777 /srv/samba/public/ -R
Nous devons également étiqueter ce répertoire avec samba_share_t
afin que SELinux permette à Samba de lire et d'écrire dessus.
sudo chcon -t samba_share_t /srv/samba/public/ -R
Redémarrez smbd et nmbd.
sudo systemctl restart smb nmb
Accéder au dossier partagé Samba depuis Windows
Sur un ordinateur Windows qui se trouve sur le même réseau, ouvrez l'Explorateur de fichiers et cliquez sur Network
dans le volet de gauche. Si vous voyez le message suivant, vous devez cliquer dessus et activer la découverte du réseau et le partage de fichiers.
File sharing is turned off. Some network computers and devices might not be visible.
Ensuite, entrez \\
suivi de l'adresse IP du serveur Samba dans la barre d'adresse de l'explorateur de fichiers, comme ceci :\\192.168.0.102
. Vous verrez une liste de ressources partagées sur le serveur Samba.
Double-cliquez ensuite sur le dossier partagé. Pour accéder au partage privé, vous devez entrer le nom d'utilisateur et le mot de passe Samba. Vous n'avez pas besoin de le faire pour accéder au partage public.
Une fois connecté, vous pouvez lire, écrire et supprimer des fichiers dans le dossier partagé Samba.
Erreur de connexion
Si vous obtenez l'erreur suivante :
You do not have permission to access \\hostname\share-name. Contact your network administrator to request access.
Vous pouvez essayer de vous connecter au partage Samba à partir de l'invite de commande. Ouvrez une invite de commande, puis exécutez la commande suivante pour fermer la session Samba en cours.
net use \\samba-server-ip\share-name /delete
Ensuite, connectez-vous au partage Samaba avec la commande suivante :
net use \\samba-server-ip\share-name /user:samba-username password
Une fois la commande ci-dessus terminée avec succès, accédez à l'onglet Réseau dans l'Explorateur de fichiers et vous devriez maintenant pouvoir accéder au partage Samba.
Mappage des lecteurs
L'une des fonctionnalités du système d'exploitation Windows est la capacité de mapper une lettre de lecteur (telle que S :) à un répertoire distant. Pour mapper la lettre de lecteur S:
au partage Samba, faites un clic droit sur le dossier partagé Samba et sélectionnez Mapper le lecteur réseau . Choisissez ensuite une lettre de lecteur et cliquez sur Terminer.
Une fois le mappage de lecteur établi, les applications peuvent accéder aux fichiers du partage Samba via la lettre de lecteur S:
. Et ce partage Samba sera automatiquement monté lorsque vous vous connecterez à votre ordinateur Windows.
Accéder au dossier de partage Samba dans le gestionnaire de fichiers Nautilus sous Linux
Si vous utilisez le gestionnaire de fichiers Nautilus, cliquez sur Other Locations
dans le volet de gauche. En bas, vous verrez une option pour se connecter au serveur . Pour accéder à votre partage Samba, tapez smb://
suivi de l'adresse IP du serveur Samba et appuyez sur Entrée. Par exemple :
- smb://192.168.0.102
Vous verrez une liste de ressources partagées sur le serveur Samba.
Si vous cliquez sur le dossier partagé privé, vous devrez entrer le nom d'utilisateur et le mot de passe Samba. Si vous cliquez sur le dossier partagé public, choisissez de vous connecter en tant qu'anonyme.
Monter automatiquement le partage Samba à partir de la ligne de commande sous Linux
Si vous avez besoin de monter automatiquement le partage Samba au démarrage, vous pouvez utiliser la ligne de commande pour monter, puis ajouter une entrée dans le /etc/fstab
dossier. Pour ce faire, vous devez installer le cifs-utils
paquet.
CentOS/RHEL
sudo dnf install cifs-utils
Debian/Ubuntu
sudo apt install cifs-utils
Créez ensuite un point de montage pour le partage Samba.
sudo mkdir /mnt/samba-private
Vous pouvez maintenant utiliser la commande suivante pour monter un dossier partagé privé.
sudo mount -t cifs -o username=your_samba_username //192.168.0.102/private /mnt/samba-private/
Il vous demandera d'entrer le mot de passe Samba. Après cela, il sera monté sur /mnt/samba-private/
répertoire.
Pour monter automatiquement le partage Samba, modifiez /etc/fstab
fichier.
sudo nano /etc/fstab
Ajoutez la ligne suivante dans le fichier.
//192.168.0.102/private /mnt/samba-private cifs x-systemd.automount,_netdev,credentials=/etc/samba-credential.conf,uid=1000,gid=1000,x-gvfs-show 0 0
Où :
- //192.168.0.102/privé :l'adresse IP du serveur Samba et le nom du partage.
- /mnt/samba-privé :point de montage pour le partage Samba.
- cif :type de système de fichiers
- x-systemd.automount :Cette option indique à systemd de créer une unité de montage automatique pour le système de fichiers. Nous l'utilisons car cela nous donne la possibilité de monter un système de fichiers distant après un accès au réseau.
- _netdev :Cela spécifie que le montage nécessite un réseau.
- informations d'identification= :Linux doit rechercher les informations d'identification dans le
/etc/samba-credential.conf
fichier. - uid=1000,gid=1000 :Par défaut, le système de fichiers monté appartiendrait à l'utilisateur root. Nous utilisons uid et gid pour changer la propriété du système de fichiers. Normalement, vous utilisez votre propre uid et gid , qui valent tous les deux 1 000 par défaut.
- x-gvfs-show :Si vous utilisez l'environnement de bureau GNOME ou ses dérivés, vous pouvez utiliser cette option pour afficher le système de fichiers monté dans le gestionnaire de fichiers.
Enregistrez et fermez le fichier. Créez ensuite le fichier d'informations d'identification.
sudo nano /etc/samba-credential.conf
Ajoutez les lignes suivantes dans le fichier.
username=your_samba_username password=samba_password domain=WORKGROUP
Enregistrez et fermez le fichier. Assurez-vous que seul l'utilisateur root peut lire ce fichier.
sudo chmod 600 /etc/samba-credential.conf
Si vous redémarrez votre ordinateur Linux maintenant, le partage Samba sera automatiquement monté.
Astuce de dépannage
Si votre serveur Samba ne fonctionne pas comme prévu, vous pouvez vérifier les fichiers journaux sous /var/log/samba/
annuaire. Vous pouvez ajouter la ligne suivante dans la section [global] du fichier /etc/samba/smb.conf pour augmenter le niveau de journalisation, si vous souhaitez enregistrer plus d'informations.
log level = 2