Debian – Partage SMB et automatisation

Debian – Partage SMB et automatisation

Le protocole SMB (Server Message Block) est utilisé pour le partage de fichiers, d’imprimantes et d’autres ressources entre ordinateurs sur un réseau, principalement dans des environnements Windows, mais également compatible avec Linux grâce à Samba. SMB permet aux clients d’accéder à des ressources distantes comme s’ils étaient locales, via des opérations telles que lecture, écriture et navigation dans les répertoires. Sous Linux, Samba implémente SMB, offrant ainsi une interopérabilité entre les systèmes Linux et Windows pour le partage de données.

Étape 1 :

Mettez à jour les paquets et installez SMB.

apt update
apt install samba -y

Activez le démarrage automatique et démarrez le service.

systemctl enable smbd
systemctl start smbd

Étape 2 :

Éditez le fichier /etc/samba/smb.conf.

nano /etc/samba/smb.conf

[nom_de_partage]
   comment = commentaire_de_partage
   path = chemin_du_dossier
   guest ok = no
   read only = no
   browsable = yes
   valid users = @nom_de_groupe

guest ok : Contrôle si les utilisateurs non authentifiés (guests) peuvent accéder au partage.

read only : Détermine si le partage est accessible en lecture seule.

browsable : Permet de rendre le partage visible dans les listes de partages disponibles lorsqu’un utilisateur navigue sur le serveur.

valid users : Spécifie les utilisateurs ou groupes qui sont autorisés à accéder au partage.

Étape 3 :

Redémarrez le service :

systemctl restart smbd

Étape 4 :

Ajoutez un utilisateur du système, ajoutez lui un mot de passe SMB et ajoutez le au groupe SMB.

adduser username
smbpasswd -a username
groupadd group
gpasswd -a username group

Étape 5 :

Créez le dossier de partage et donnez les permissions nécessaires pour permettre l’accès aux membres du groupe.

mkdir /mnt/sauvegarde
chgrp -R group /mnt/sauvegarde
chmod -R g+rw /mnt/sauvegarde
  1. chgrp -R group /mnt/sauvegarde
    chgrp : Change le groupe propriétaire d’un fichier ou répertoire.
    -R : Option récursive. Cela signifie que la commande s’applique non seulement au répertoire /mnt/sauvegarde, mais également à tous les fichiers et sous-répertoires qu’il contient.
    group : Nom du groupe que vous voulez définir comme propriétaire.
    /mnt/sauvegarde : Chemin du répertoire cible.
  1. chmod -R g+rw /mnt/sauvegarde
    chmod : Modifie les permissions d’accès pour les fichiers ou répertoires.
    -R : Option récursive. Applique les permissions spécifiées au répertoire cible et à tout son contenu.
    g : Désigne les utilisateurs du groupe propriétaire.
    +rw : Ajoute les permissions de lecture (r) et d’écriture (w) pour le groupe.
    /mnt/sauvegarde : Chemin du répertoire cible.

Et enfin, redémarrez le service SMB :

systemctl restart smbd

Et si on automatisait un partage SMB ? 😉

Voici un exemple de code, à vous de le modifier pour l’adapter à vos besoins !

nano create_smb_share.sh

#!/bin/bash

# Récupération des infos
read -p "Saisissez le nom du dossier partagé (ex: sauvegarde) : " folder
read -p "Saisissez un commentaire pour le partage : " comment
read -p "Saisissez le chemin du partage (ex: /mnt/sauvegarde/) : " path
read -p "Saisissez le nom du groupe de partage : " group
read -p "Saisissez le nom de l'utilisateur : " username
read -s -p "Saisissez le mot de passe pour l'utilisateur Linux $username : " password
echo
read -s -p "Saisissez le mot de passe SMB pour l'utilisateur $username : " smbpassword
echo

# Mettre à jour les paquets et installer Samba
echo "Mise à jour des paquets et installation de Samba..."
apt-get update
apt-get install samba -y

# Activer et démarrer le service Samba
echo "Activation et démarrage de Samba..."
systemctl enable smbd
systemctl start smbd

# Configurer le fichier smb.conf
echo "Configuration de Samba..."
cat <<EOF >> /etc/samba/smb.conf

[$folder]
   comment = $comment
   path = $path
   guest ok = no
   read only = no
   browsable = yes
   valid users = @$group
EOF

# Redémarrer Samba pour appliquer les modifications
echo "Redémarrage de Samba..."
systemctl restart smbd

# Ajouter l'utilisateur Linux avec le mot de passe
echo "Ajout de l'utilisateur Linux..."
useradd -m $username
echo "$username:$password" | chpasswd

# Configurer le mot de passe SMB pour l'utilisateur
echo "Ajout de l'utilisateur SMB..."
echo -e "$smbpassword\n$smbpassword" | smbpasswd -a $username
smbpasswd -e $username

# Ajouter le groupe et associer l'utilisateur au groupe
echo "Création du groupe et association de l'utilisateur au groupe..."
groupadd $group
gpasswd -a $username $group

# Créer le chemin et configurer les permissions
echo "Création du chemin et configuration des permissions..."
mkdir -p $path
chgrp -R $group $path
chmod -R g+rw $path

# Redémarrer Samba pour finaliser
echo "Redémarrage final de Samba..."
systemctl restart smbd

echo "Configuration terminée. Le partage SMB est prêt."

Rendez-le exécutable :

chmod +x create_smb_share.sh

Lancez-le !

./create_smb_share.sh

Et voilà ! Vous savez déployer un partage SMB !

Mappez le partage sur un système Linux

Étape 1 :

Connectez vous sur la machine cliente, mettez à jour les paquets et installez cifs-utils.

apt update
apt install cifs-utils -y

Étape 2 :

Créez un point de montage.

mkdir -p /mnt/smb_share

Étape 3 :

Mappez le partage SMB (Mappage à la main).

sudo mount -t cifs -o username=your_username,password=your_password //ip_serveur_smb/nom_dossier_partage /mnt/smb_share
  • //server_ip_or_name/share_name : Adresse du partage SMB.
  • /mnt/smb_share : Point de montage local.
  • username et password : Identifiants pour accéder au partage.

Que pensez-vous d’un mappage automatique ?

Pour cela, éditez le fichier /etc/fstab

nano /etc/fstab

Ajoutez ceci à la suite du fichier :

//server_ip_or_name/share_name /mnt/smb_share cifs username=your_username,password=your_password,uid=1000,gid=1000 0 0

uid=1000 et gid=1000 : Assurez-vous que ces valeurs correspondent à l’utilisateur et au groupe qui doivent avoir accès au partage.

Mais comment le savoir ?

Il y a 2 possibilités de la savoir, soit en direct soit en recherche inversée :

En direct :

id username
root@bkp03-home:~# id adminuser
uid=1000(adminuser) gid=1000(adminuser) groupes=1000(adminuser),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),100(users),106(netdev)
  • uid=1000 : ID utilisateur.
  • gid=1000 : ID de groupe principal.
  • groups= : Liste des groupes supplémentaires de l’utilisateur.

En recherche inversée

Pour un UID :

getent passwd 1000

sortie : adminuser:x:1000:1000:adminuser,,,:/home/adminuser:/bin/bash

Pour un GID :

getent group 1000

sortie : adminuser:x:1000:

Si vous le souhaitez, vous pouvez également utiliser un fichier de mot de passe, cela évite d’écrire les mots de passe en clair dans /etc/fstab.

nano /etc/smbcredentials

Ajoutez les credentials :

username=your_username
password=your_password

Sécurisez le fichier !! Attention, ceci est très important, sinon quiconque pourra lire les credientials en clair…

chmod 600 /etc/smbcredentials

Ensuite, modifiez le fichier /etc/fstab :

//server_ip_or_name/share_name /mnt/smb_share cifs credentials=/etc/smbcredentials,uid=1000,gid=1000 0 0

Et enfin, on recharge les points de montage :

sudo mount -a

Et voilà ! le partage SMB n’a plus de secret pour vous 😉

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *