Serveur Samba (Linux)


SERVEUR Samba ( Sous Linux )


Prérequis

Installation de la distribution Mandrake 10.0 (Serveur) 
Avoir un domaine. 

Introduction

Le serveur Samba est l'outil privilégié pour installer un réseau LAN (Local Area Network) fonctionnant avec le protocole SMB (Server Message Block). Il est donc possible de mixer efficacement dans un même réseau stations Linux et PC Windows grâce à la connaissance de ce logiciel serveur. 
Son utilité : SAMBA est un système de partage de fichiers et d'imprimantes entre des stations Unix et Windows de façon transparente et stable. 

1.Architecture de Samba

Samba est constitué d'un serveur et d'un client, ainsi que de quelques outils permettant de réaliser des services pratiques ou bien de tester la configuration. 
Le serveur est constitué de deux applications (appelées démons): 
smbd, noyau du serveur, fournissant les services d'authentification et d'accès aux ressources 
nmbd, permettant de montrer les services offerts par Samba (affichage des serveurs Samba dans le voisinage réseau, ...) 
le client: smbclient est un client pour linux fournissant une interface permettant de transférer des fichiers, accèder à des imprimantes 
smbtar: permettant d'effectuer un transfert de ou vers un fichier TAR sous linux 
testparm vérifiant la syntaxe du fichier smb.conf, le fichier de configuration de Samba 
Le protocole de communication permettant cette communication entre Windows et Linux s'appelle SMB (Server Message Block). Mis au point par Microsoft en 1987, en reprenant un concept mis au point par IBM en 1985 (NetBIOS), ce protocole s'appuie sur NetBEUI (ainsi que TCP/IP). L'intérêt de TCP/IP provient du fait qu'il a été très largement adopté. Ainsi TCP/IP est déjà implémenté sur la plupart des systèmes d'exploitation (Unix, Linux, AmigaOS, MacOS, OS/2, ...). selon le schéma suivant : 
Application
SMB
NetBios
TCP/IP
NetBeui
IPX/SPX
Pilotes Réseaux

2.Installation des paquetages nécessaires au serveur samba

Avant toute chose s'assurer que les paquetages nécessaires sont installer sinon les installer en tapant mcc (Centre de Contrôle Mandrake) en ligne de commande dans le terminal en se loggant en tant que root (taper su puis le mot de passe du root), aller dans Gestionnaire de Logiciels puis dans Installer, sélectionner les trois paquetages suivants (dans tous les paquetages, classement alphabétiques) : 
samba-client-3.0.2a-3mdk
samba-common-3.0.2a-3mdk
samba-server-3.0.2a-3mdk

Puis cliquer sur Installer. 

Premier démarrage de Samba

Après installation, le serveur de Samba devrait normalement être apte à démarrer (sans aucun partage de fichiers ou d'imprimante) en lançant la commande suivante: 
/etc/rc.d/init.d/smb start 
Starting SMB services: [OK] 
Starting NMB services: [OK] 

La commande suivante permet de contrôler que les deux démons sont correctement lancés 
/etc/rc.d/init.d/smb status (ou service smb status) 
smbd (pid 1054) is running...
nmbd (pid 1056) is running...

Les commandes utiles

(à partir du terminal en root)
  • testparm /etc/samba/smb.conf
    • Test de syntaxe d'écriture du fichier smb.conf
  • /etc/rc.d/init.d/smb stop
    • Stop les services Samba
  • /etc/rc.d/init.d/smb start
    • Démarre le serveur Samba
  • /etc/rc.d/init.d/smb restart
    • Redémarrage de Samba
  • /smbstatus
    • Affiche les connexions actives via Samba

3.Configuration du fichier smb.conf

La configuration de Samba est effectuée par l'intermédiaire d'un fichier de configuration unique: smb.conf. Ce fichier est située dans le répertoire /etc/samba/ 
Remarque : à chaque modification du fichier smb.conf à l'aide d'un éditeur de texte, l'enregistrer puis taper en ligne de commande : /etc/rc.d/init.d/smb restart (afin de redémarrer le serveur samba et par la même occasion prendre en compte les modifications du fichier smb.conf) 
Ce fichier décrit les ressources que l'on désire partager, ainsi que les permissions/restrictions qui leur sont associées. Le fichier smb.conf se découpe selon des rubriques (chacune référencé par une ligne contenant le nom de la section entre crochets) comprenant chacune un ensemble de lignes de paramètres du type attribut = valeur. Une ligne commençant par un # est une ligne de commentaires et une ligne commençant par ; est inactive. 
Il existe 3 sections principales :
  • La section [global]
    • définit des paramètre généraux sur le serveur
  • La section [homes]
    • définit le partage d'un répertoire personnel
  • La section [printers]
    • définit les imprimantes partagées par le serveur

Section "global"

Voici un exemple (l'exemple est celui du réseau R2D4) de section [global] : 
[global] 

# même nom de groupe que celui sous Windows (Voisinage réseau) 
workgroup = MSHOME 

# nom sous lequel apparaîtra le serveur dans le voisinage réseau 
netbios = samba server 

# ce qui apparaîtra dans la rubrique détail du voisinage réseau, %v fait 
# apparaître le n° de version de samba 
server string = Samba Server %v 

# les mots de passe transitent cryptés 
encrypt passwords = Yes 
smb passwd file = /etc/samba/smbpasswd 

# lieux de stockage du journal des événements 
log file = /var/log/samba/log.%m 

# taille maximum du journal 
max log size = 50 

# aucun compte invité (facultatif) 
guest account = nobody 

# accès multi-utilisateur (facultatif) 
Share modes = yes 

# emplacement du fichier printcap (imprimantes sur le serveur Linux) 
printcap = /etc/printcap 

# partage de toutes les imprimantes définies dans printcap 
printcap name = cups 
load printers = yes 
printing = cups 
printer adm = @ adm 

# fichier journal de Samba 
log level = 1 
log file = /var/log/samba/log.%m 

# mode de sécurité : (user / share / server) 
security = user 

# Autoriser l'accès a certains réseaux (le point final est important) 
hosts allow = 192.168.1. 

# Vous pouvez autoriser toutes les machines de ce réseau sauf 192.168.1.10 
hosts allow = 192.168.1. EXCEPT 192.168.1.10 

# Mettre les adresses IP des machines auxquelles vous souhaitez interdire l'accès 
# au serveur samba par exemple : ALL, pour interdire tout le monde sauf les 
# machines autorisées par <hosts allow>. 
Hosts deny = ALL 

# pas de proxy dns 
dns proxy = No 

# Laisser ce champs par défaut 
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 

# active le fonction de serveur de temps 
time server = yes 

# le script de connexion porte le nom du groupe, %g est la variable samba pour le 
# groupe primaire 
logon script = %g.bat 

# autorise la connexion des utilisateurs sur le domaine 
domain logons = yes 

# Si on veut que le serveur soit le maître du domaine 
domain master = yes 

# dans le cas de la présence de plusieurs contrôleurs de domaine, c'est le 
# serveur qui est le favori 
preferred master = yes 

# En cas de serveur maître permet de gagner l'élection contre les autres machines 
# windows 
os level = 255 
# on donne l'accès au répertoire netlogon qui contient les scripts de démarrage 
[netlogon] 

#chemin d'accès du répertoire 
path = /home/netlogon 

# seuls les utilisateurs spécifiés peuvent utiliser ce répertoire 
public = no 

# on ne peut pas écrire dans ce répertoire 
writable = no 

# le répertoire n'apparaît pas dans l'arborescence 
browseable = no 

#liste des utilisateurs ayant les droits root sur ce répertoire, ici le formateur 
admin users = guillaume 

Section "homes"

Partage du répertoire personnel 
La section [homes] permet de définir l'accès au répertoire personnel de chaque utilisateur. Voici un exemple de section: 

[HOMES] 
# commentaire visible depuis le voisinage reseau 
comment = Home Directories 

# affichage de la ressource pour tous 
browseable = no 

# possibilité d'écrire sur la ressource 
writable = yes 

Section "documents"

Partager un répertoire quelconque 
Il est possible de définir une accès personnalisé à n'importe quel répertoire de la machine en créant une section portant le nom que le veut donner à la ressource. Celui-ci contiendra entre autres un paramètre path donnant le chemin d'accès à la ressource. 
Ce répertoire sera consultable en lecture et en écriture sur la station Windows suivant l'utilisateur loggé. 
Voici un exemple de section personnalisée: 

[DOCUMENTS] 
# commentaire visible depuis le voisinage réseau 
comment = /home/Répertoire_quelconque 

# chemin d'accès a la ressource 
# Attention à la casse !! 
path = /home/Répertoire_quelconque 

# affichage de la ressource pour tous 
browseable = no 
guest ok = yes 

# mettre les noms d'utilisateurs qui seront validés, la procédure pour les 
# insérer sera expliquée ultérieurement 
valid users = noms_utilisateurs 

# chemin d'acces a la ressource 
#etant donné que des utilisateurs insérés pourront y accéder il faut mettre no 
public = no 

# utilisateurs ayant les droits root sur ce répertoire 
admin users = noms_utilisateurs 

# possibilité d'écrire sur la ressource 
writable = yes 

Section "cdrom"

Partage d'un lecteur de CD-ROM 
Il est ainsi possible de partager un lecteur de CD-ROM (celui-ci devant être préalablement monté) , en créant par exemple une section [cd-rom] comme suit: 

[CD-ROM] 
# commentaire visible depuis le voisinage reseau 
comment = lecteur de CD-ROM 

# chemin d'accès au lecteur 
path = /mnt/cdrom 

# accessible à tous 
public = yes 

# impossibilité d'écrire sur la ressource 
writable = no 

create mask = 0750 

4. Accèder à une ressource Samba sous linux

Le client Samba (smbclient) permet de fournir une interface en ligne de commande pour accéder aux ressources Samba à partir d'une machine de type Unix. 
smbclient permet en premier lieu de vérifier l'existence d'une serveur Samba sur le réseau et de lister les ressources qu'il partage grâce à la commande: 
smbclient nom_serveur_smb 
Une fois les ressources identifiées, il est possible d'accèder à chacune d'entre elles par la commande: 
smbclient \\\nom_serveur_smb\\ressource -U nom_utilisateur 
Un mot de passe devrait être demandé à l'utilisateur. Il suffit ensuite d'envoyer des commandes FTP afin d'envoyer/recevoir des fichiers ou bien de parcourir les répertoires de la ressource. 
L'accès à une imprimante se fait par la commande 
smbclient \\\nom_serveur_smb\\ressource -P 
l'impression du fichier /usr/local/samba/lib/etc.conf se fait par la commande: 
print /usr/local/samba/lib/etc.conf 
la visualisation de la queue d'impression: 
queue 
l'arrêt de smbclient: 
exit 
Remarque : Pour accèder au voisinage réseau sous Linux, ouvrir Konqueror et taper dans la barre d'URL : smb:/ 

5.Création des utilisateurs Samba et accès aux comptes de ces utilisateurs

Créer un utilisateur sur la machine serveur Samba sous Linux Mandrake version 10 (serveur) : 

Graphiquement

En ligne de commande taper mcc en se loggant en tant que root (ou passer par le menu « configure your computer »),nous voilà dans le Centre de Contrôle Mandrake , ensuite aller dans « système » puis « Utilisateurs et groupes » enfin « ajouter utilisateur ». 

En ligne de commande taper

adduser Nom_Utilisateur 

Ensuite entrer le mot de passe de l'utilisateur dans le fichier smbpasswd dans le répertoire /etc/samba de la manière suivante (en ligne de commande): 
smbpasswd -a Nom-Utilisateur 
En réponse : 
New SMB password : Donner le même mot de passe que lors de l'ajout de l'utilisateur 
Retype new SMB password :idem 

Créer le même utilisateur avec le même passe sur la machine Windows (Client) : 

Aller dans « panneau de configuration » puis dans compte utilisateur pour créer un utilisateur avec les droits « administrateur » 

Renouveler autant de fois l'opération précédente qu'il y a d'utilisateur à créer. 

Remarque : En cas d'utilisateurs déjà existant sur la machine Windows, le recréer uniquement sur le serveur Linux et surtout ne pas renommer un utilisateur, soit il est déjà existant soit il faut le créer. A chaque création d'utilisateur sous windows, redémarrage de la station. 

6.Le partage de répertoires

Il y a le partage du répertoire personnel, qui affiche les répertoire selon l'utilisateur logué et il y a le partage d'un répertoire commun. 
Attention, si on partage un répertoire ne se trouvant pas dans l'arborescence « Home », tout accès sera refusé, donc le répertoire « Home » ou un de ses sous-répertoires doit contenir ce répertoire commun pour un usage optimal de celui-ci. 

7.Les messages d'erreurs

Des messages d'erreurs du type suivant peuvent provenir : 

Problèmes : Réseau introuvable (sous Windows) 
ou encore : 
Internal Error 
Please send a full bug at http://kde.org 
Unknown error condition in stat : Network is unreahable (sous Linux) 
Ce type d'erreur signifie que vous n'êtes pas connecté à un réseau, branchement, câbles réseau à vérifier, configuration réseau et fichier /etc/samba/smb.conf à vérifier également. 

Si un message d'erreur tel que : 
Impossible de se connecter au serveur samba 
est affiché, dans ce cas vérifier la configuration du fichier /etc/samba/smb.conf. 
Le serveur Samba s'affiche au sein du domaine mais affiche le message d'erreur suscité lorsque l'on clique dessus, dans ce cas vérifier le chemin du répertoire de partage quelconque ou personnel dans le fichier smb.conf.