Installation et configuration d'un serveur Samba sous Ubuntu 22.04.1 LTS (Jammy Jellyfish)

Le logiciel Samba est un outil permettant de partager des dossiers et des imprimantes dans un réseau local. Le partage de dossiers et d'imprimantes dans un réseau local est une fonctionnalité des systèmes d'exploitation modernes permettant d'accéder à des ressources d'un ordinateur (dossiers de données et imprimantes) à partir d'un autre ordinateur situé dans un même réseau local (réseau domestique ou d'entreprise).
Il permet de partager et d'accéder aux ressources d'ordinateurs fonctionnant avec des systèmes d'exploitation Windows et Mac OS, ainsi que des systèmes GNU/Linux dans lesquels une implémentation de Samba est installée. Les systèmes Windows utilisent leur propre protocole de partage de fichiers : SMB/CIFS. Le logiciel Samba a été développé pour permettre aux systèmes UNIX (dont Linux et Mac OS) d'utiliser également ce protocole.
Le protocole SMB (Server Message Block) est un protocole de partage de fichiers réseau. L'ensemble de paquets de messages qui définit une version particulière du protocole est appelé dialecte. Le protocole CIFS (Common Internet File System) est un dialecte de SMB.
Installons Samba sous Ubuntu

Puis, pour configurer notre partage Samba, il vous faudra éditer le fichier /etc/samba/smb.conf
Nous allons éditer le fichier avec l'éditeur de fichier Vim
Dans ce fichier, toutes les lignes commençant par ; ou # sont des commentaires.
Le fichier comporte des sections : la configuration globale commence par[global] puis ensuite la configuration de chaque partage est aussi définie dans une section dont le nom est entre crochets [ ]
Nous allons expliquer quelques paramètres de ce fichier
Workgroup = WORKGROUP
Nom du domaine ou groupe de travail. Par défaut sous Windows, il est à WORKGROUP donc on peut laisser le nom par défaut.
Interfaces = 172.16.11.4/24
bind interfaces only = yes
Par défaut, samba accepte les connexions sur toutes les interfaces. Samba est un système de partage de fichiers pour réseau local donc il est conseillé de le configurer pour qu'il n'écoute que sur l'interface locale. Je vais configurer l'interface par son adresse ou par son nom. Ici j'ai décidé de mettre l'adresse IP
Le deuxième paramètre permet de lier les interfaces lorsque plusieurs interfaces sont définis
server role = standalone server
map to guest = bad user
Le serveur Samba est configuré comme un serveur indépendant (standalone server) plutôt que comme un contrôleur de domaine. Le deuxième paramètre définit qu'un échec d'authentification pour un utilisateur inconnu connectera l'utilisateur avec le compte invité. Ensuite on peut définir pour chaque partage les comptes invités ou non.
security = user
Mot de passe demandé initialement lors du début de session et suffisant pour toute la durée de cette session
Path =
Indique le chemin du répertoire partagé. Dans toutes les sections du fichier de configuration, il est possible d'utiliser certaines variables. Ici, vous utilisez %u qui sera automatiquement remplacé dans le chemin par le nom de l'utilisateur. C'est très pratique car sans ça, il aurait fallu créer un partage pour chaque utilisateur.
read only = yes ou no
Un no indique que le partage sera en lecture-écriture, un yes indique que le partage sera en lecture seule. Il est possible de configurer un partage en lecture seule et ensuite de configurer des exceptions pour certains utilisateurs en ajoutant ensuite le paramètre write list = user1 user2
guest ok = yes ou no
Indique si les comptes invités sont autorisés à accéder au partage. Un yes indique que les comptes invités peuvent accéder au partage et un no indique que les comptes invités ne peuvent pas accéder au partage
force create mode =
Indiquent les droits donnés respectivement aux nouveaux fichiers créés sur le partage.
Ex : force create mode = 0775 c'est à dire lecture et écriture pour le propriétaire et le groupe, lecture seule pour les autres
force directory mode =
Indiquent les droits donnés respectivement aux nouveaux répertoires créés sur le partage.
Ex : force directory mode = 2770
valid users =
Indique les noms des utilisateurs autorisés à accéder au partage. Nous pouvons également indiquer des noms de groupes qui commencent par @
Sur Ubuntu, le groupe sambashare est créé automatiquement à l'installation de samba. Ici seuls les utilisateurs appartenant à ce groupe pourront accéder au partage[home]
force user =
Indiquent l'utilisateur et le groupe système auquel sera associé l'utilisateur distant qui se connecte.
force group =
impose un groupe comme groupe propriétaire de tout document créé dans ce service
browseable = yes
Visible depuis les machines clientes
printable = yes
Autorise le service à imprimer (réservé aux imprimantes)
valid users =
Si accès avec identification (public = no), liste des utilisateurs autorisés
Configurons le fichier /etc/samba/smb.conf


Et j'ai créé le dossier que je veux partager. Ici je l'ai nommé partage et ensuite j'ai fait la configuration suivante

Ensuite je configure le fichier afin d'ajouter une imprimante

Par défaut plusieurs drivers sont déjà présents dans le dossier indiqué dans le path

A présent je vais sur mon partage Samba en tapant \\172.16.11.4 dans la barre et je m'identifie

Après authentification j'accède au Partage et à l'imprimante

Je constate
que Samba a identifié l'imprimante sans que je n'ai eu à le lui spécifier car
l'imprimante est dans le même réseau que mon serveur Samba et les drivers des
marques les plus utilisés sont installés par défaut dans le dossier
/var/lib/samba/printers et je double clic sur l'imprimante

et j'installe les pilotes Generic MS publisher Color Printer qui sont des pilotes compatibles avec plusieurs périphériques.
Une fois les pilotes installées, je pouvais procéder à des impressions
