2.4.1 Un premier serveur simple en mode share

Nous allons mettre en place un premier serveur simple:
Ce serveur ne mettra à disposition qu'un seul partage nommé [public] en accès complet pour tous les utilisateurs du réseau local.

Se loguer en tant qu'utilisateur root (plus tard, il vaudra mieux prendre l'habitude de se loguer en tant qu'utilisateur lambda et effectuer des "su" pour les commandes nécessitant d'être root) et créer un fichier smb.conf dans /etc/samba/.
(un fichier smb.conf d'exemple existe déjà à l'installation de Samba: renommez le en smb.conf.exemple ou écrasez-le).
Y taper les quelques lignes suivantes:

#======== Paramètres globaux ========
[global]

   workgroup = MaMaison
   netbios name = LeJoliServeur

   hosts allow = 192.168.52. 127.

   security = share

#===== Définition des partages =====
[public]
   comment = Dossier public
   path = /home/samba/public
   browseable = yes
   public = yes
   writable = yes

Quelques explications:

Les lignes précédées d'un # sont des lignes de commentaires et sont donc facultatives.
Il est aussi possible de commenter une ligne en la faisant précéder d'un point-virgule ; (on réserve plutôt le point-virgule pour commenter des lignes de paramètres, que des explications).

La section [global] contient l'ensemble des paramètres globaux de configuration du serveur Samba.
Toutes les sections sont déclarées entre crochets (et en dehors du mot réservé [global], toutes les autres sections désignent des partages (parmi ceux-ci, il existe quelques autres mots réservés que nous rencontrerons plus loin)).

MaMaison désigne le nom du groupe de travail.
LeJoliServeur désigne le nom sous lequel le serveur apparaitra dans le Voisinage réseau Micro$oft.
(attention à ce que ces noms (NETBIOS) ne dépassent pas 15 caractères)

192.168.52. désigne l'ensemble des machines dont l'IP sera de la forme 192.168.52.xxx
Il s'agit des machines autorisées à se connecter aux partages sur le serveur.
127. désigne l'interface locale qui doit être autorisée.

share désigne un des trois modes de fonctionnement du serveur (les deux autres sont user et domain).
share désigne le mode de fonctionnement le plus proche des partages sur des postes win9x (qui se limitent à donner l'accès en lecture seule ou un accès complet sur un dossier en fonction d'un mot de passe (samba, même en mode share en fait déjà un peu plus)).

[public] désigne un nom de partage (le nom qui apparaitra dans le Voisinage réseau).
Dossier public est le commentaire qui apparaitra également dans le Voisinage réseau.
Le partage public et son commentaire
/home/samba/public est le chemin vers le dossier partagé sur la machineLinux.
browseable = yes précise que ce partage sera visible/listable dans le Voisinage réseau (sinon il faut connaitre l'existence du dossier pour y accéder (par un "net use p: \\LeJoliServeur\public" dans une fenêtre M$Do$, ou en connectant un lecteur réseau dans l'Explorateur Window$).
public = yes rend le dossier accessible à tous les utilisateurs.
writable = yes désigne ce partage comme ouvert en écriture (remarque: ce sont des droits samba; il faut que cela soit compatible avec les droits linux sur le dossier).

Puis dans une console, créer les dossiers /home/samba et /home/samba/public et rendre ce dossier entièrement ouvert au sens linux (rwx pour tous):

Veiller à être root pour exécuter ces actions (si vous n'êtes pas logué en root).
[steph@DeepGlue steph]$ su
Password:

[root@DeepGlue steph]# mkdir /home/samba
[root@DeepGlue steph]# mkdir /home/samba/public
[root@DeepGlue steph]# chmod 777 /home/samba/public

Utiliser la commande testparm qui lit le fichier smb.conf et permet de vérifier qu'il n'y a pas d'erreur de syntaxe.

Démarrer le serveur samba:
[root@DeepGlue steph]# samba start
Starting SMB services:                                          [  OK  ]
Starting NMB services:                                          [  OK  ]

On va faire un petit tour sur le client et rechercher le serveur, puis le partage dans le Voisinage réseau.

Si vous ne le trouvez pas, vérifiez que le Groupe de travail déclaré correspond bien à celui du smb.conf; vérifiez également que l'IP du client est bien dans la classe des machines autorisées à se connecter.
Tentez aussi une recherche Outils/Rechercher/Ordinateur... et saisir le nom de l'ordinateur à rechercher (ici LeJoliServeur).

Créer des dossiers et fichiers dans le partage [public].

Vue de l'Explorateur Window$

Le client a créé un fichier dans le partage accessible sans mot de passe:
[root@DeepGlue steph]# ls /home/samba/public/ -la

total 1
drwxrwxrwx    2 root     root          96 déc  3 16:34 ./
drwxr-xr-x    3 root     root          72 déc  3 16:30 ../
-rwxr--r--    1 nobody   nogroup        0 déc  3 16:34 Nouveau Document texte.txt*

Ce fichier créé par un utilisateur "invité" a donc, pour utilisateur et groupe propriétaires, l'utilisateur invité par défaut, à savoir "nobody" et le groupe "nogroup".
Ces utilisateur et groupe sont des utilisateurs avec extrêmement peu de droits (donc peu de pouvoir de nuisance).

 

Attention:
Ne pas confondre le nom de partage (indiqué dans [public]) et le nom du dossier dans l'arborescence Linux (indiqué dans path=/home/samba/public):
De l'extérieur, le partage [public] est accessible via \\LeJoliServeur\public, alors que l'arborescence Linux, il se trouve dans /home/samba/public.
(le nom de partage peut être complètement différent du nom du dossier).

 

Suivent quelques erreurs classiques (c'est rassurant de se dire qu'un jour ou l'autre on fait les mêmes erreurs que ceux qui nous ont précédé (*)):
- Tenter d'accéder au partage dans un script en spécifiant \\LeJoliServeur\home\samba\public se soldera par un échec.
- Créer un partage dans le smb.conf et oublier de le créer (ou de modifier ses droits et propriétaires) dans l'arborescence Linux.
(*) Pour les habitués de l'IUFM et des notions de didactique de l'enseignement: Montrer les erreurs à ne pas faire n'est pas la garantie de ne pas les voir apparaitre chez les élèves...

 

Remarques:
(1) IPC$ en mode security = share
Si des problèmes se présentent avec la ressource IPC$, c'est qu'il y a incompréhension entre le serveur et le client (cela ne devrait pas arriver avec des W98 et plus).
Ajouter les deux lignes suivantes dans la section [global] du smb.conf et redémarrer le serveur samba
  encrypt passwords = yes
  smb passwd file = /etc/samba/smbpasswd


et côté client, passer la clé de registre crypter_les_mots_de_passe.reg .
(en security = user, l'apparition de IPC$ peut signifier que l'utilisateur est inconnu de Samba).
Voir aussi le paragraphe 2.4.7.1 Encryptage des mots de passe.

(2) Attention aux noms de partage:
Eviter les espaces dans les noms de partage:
C'est un problème classique que de rencontrer des soucis d'impression parce qu'un nom de partage sera "HP 3820".
Il suffit généralement de le renommer en "HP3820" et de corriger le nom de partage dans Menu Démarrer/Paramètres/Imprimante/HP3820-clic-droit/Propriétés/Onglet Détails pour régler le problème.
Par ailleurs, les noms de partages dépassant 12 caractères ont tendance à poser des problèmes à Window$.
Rectification:
"Windows refuse de partager lui-même un répertoire dont le nom possède plus de 12 caractères.
Mais : je n'ai pas eu de difficultés pour lui faire "connecter un lecteur réseau" présent sur un serveur linux dont le nom contient 20 caractères qui est un répertoire personnel."
Philippe JEANNE.

(3) Les postes affichés dans le Voisinage Réseau:
Les noms des postes contactés sont stockés dans un cache de noms NETBIOS qui n'est renouvelé que toutes les 10-15min.
Il n'est donc pas rare de voir un poste qui n'est plus disponible et de ne pas en voir un qui vient d'être allumé (et ceci même parfois en raffraichissant l'affichage par F5).
Une recherche par Outils/Rechercher/Ordinateur avec une saisie de l'ordinateur cherché est généralement plus efficace.

 

Ressources:
Le fichier smb.conf (avec les fins de lignes UNIX): smb.conf.version1 (qu'il faudra renommer en smb.conf)

Pour en apprendre un peu plus sur les réseaux Window$ et en particulier sur NETBIOS: http://www.linux-france.org/~fclerc/article/serveur/netbios/index.html

 

Sommaire - Précédent - Suivant