lundi 19 décembre 2016

CONFIGURATION D’UN SERVEUR SAMBA sous RHEL


Introduction
Il existe des protocoles permettant de transférer des fichiers à l'aide de commandes à travers un réseau hétérogène (constitué de machines de types et de systèmes d'exploitation différents). Toutefois, ce type de manipulation est assez fastidieux. Ainsi, les réseaux Microsoft Windows offrent une manière totalement transparente de partager des fichiers, en permettant notamment la copie par simple glisser-déposer. Cependant, ce type de réseau ne permet à la base qu'un partage de fichiers entre machines fonctionnant avec un système Microsoft Windows ou OS/2. Ainsi, si Nous possédons une machine sous Linux, il existe une solution : utiliser Samba.
Samba est un logiciel très simple. Il s'agit de la première solution permettant une intégration transparente de clients Windows dans un environnement serveur UNIX qui ne nécessite pas l'installation d'un logiciel client spécifique. Grâce à Samba, nous pouvons partager des disques UNIX et des imprimantes, assurer la sécurité et la fiabilité, et même intégrer un domaine Windows. D'autre part, Samba permet de définir des niveaux d'accès très pointus, très proche de celui proposé par un serveur Windows NT. Samba est donc une alternative économique et robuste à un recours à un serveur Windows NT.

1 QU'EST-CE QU’UN SERVEUR SAMBA ?

SAMBA est un ensemble de programmes qui permettent de connecter à un serveur LINUX, des stations fonctionnant sous des systèmes divers : Windows 3.11, Windows 9x, Windows NT, windows 2000, windows xp, OS/2, Mac.
Mis au point par Microsoft en 1987, en reprenant un concept mis au point par IBM en 1985 NetBIOS (Network Basic Input/Output System), le projet Samba a été initié dès 1991 puis développé par un australien, Andrew Tridgell. Celui-ci lui donna ce nom, en choisissant un nom voisin de SMB en interrogeant un dictionnaire Unix, par la commande grep : grep "^s.*m.*b" /usr/dict/words. Son fonctionnement est conforme au schéma client-serveur.

Le serveur Linux est en mesure de se conduire comme un serveur de fichiers capable d'offrir les services habituels sur un réseau :

- partage de fichiers et de répertoires,
- partage d'imprimantes,
- respect des comptes utilisateurs
- gestion des permissions d'accès
- exécution de scripts de connexion personnalisés

Ce protocole est aussi appelé :

- CIFS : Common Internet File System (RFC 1001,1002)
- LanManager
- NetBIOS

Le fonctionnement de Samba
Le protocole de communication permettant cette communication entre Windows et Linux s'appelle SMB (Server Message Block). Ce protocole s'appuie sur NetBIOS (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. *


2 L'architecture de Samba
Le serveur offre ses ressources (système de fichiers, imprimantes ...) aux clients Windows qui s'y connecteront sous un compte créé par root, après une authentification par mot de passe.
Le travail est partagé en 2 "daemons" :
smbd pour le service 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, service de résolution des noms Netbios ...).
Du côté client, le protocole SMB fonctionne au-dessus de plusieurs protocoles.
Il nécessite NetBIOS au dessus de TCP/IP (par contre NetBEUI n'est pas utile).
Le client : smbclient est un client pour Linux fournissant une interface permettant de transférer des fichiers, accéder à des imprimantes ;
 smbtar : permet d'effectuer un transfert de ou vers un fichier TAR sous Linux ;
testparm vérifie la syntaxe du fichier smb.conf, le fichier de configuration de Samba.

Chaque demande de connexion par Samba, d'une station au serveur Linux, laisse une trace stockée dans un fichier log.%m, situé dans le répertoire /var/log/samba ( %m désigne le nom de la station).
Toute connexion pourra donc être identifiée de manière précise puis examinée sur une ligne de ce fichier : nom d'utilisateur, nom de la machine, date, heure de début, heure de fin, services utilisés.

Samba peut implémenter la sécurité au niveau de l'utilisateur, ce qui est recommandé et non au niveau des ressources comme c'est le cas dans les réseaux de type WorkGroup.

3 ETUDES DES PARAMETRES DU FICHIER DE CONFIGURATION
Le fichier de configuration de samba est /etc/samba/smb.conf ce fichier comporte des sections qui sont déclarées entre crochet: [] celle que l'on trouvera toujours est la section GLOBAL. On y trouvera la configuration global du serveur qui déterminera si samba tourne en tant que serveur de fichier, PDC ou BDC. C'est souvent la section la plus importante.
Ensuite viennent d'autres sections spécialisées comme HOMES, PRINTERS, PROFILES, NETLOGON,...
Dans le fichier de configuration un commentaire commence par un dièse (#) ou un point-virgule (;). Un commentaire ne peut être que sur une nouvelle ligne, c'est-à-dire qu'il ne pourra pas se trouver devant ou derrière un paramètre ou sa valeur. Tout manquement à ces deux règles engendrera un disfonctionnement de notre serveur.
Dans cette section, nous allons trouver tous les paramètres généraux de samba. En voici les principaux
        workgroup=MONDOMAINE
        netbios name=SERVEURSMB
        server string=Serveur %L (Samba %v)
workgroup
Nom du groupe de travail (workgroup) ou du domaine.
Valeur par défaut .
workgroup = WORKGROUP
netbios name
Nom Netbios de la machine (le nom Windows).
Valeur par défaut. Nom Internet (hostname) de la machine.
server string
Description de la machine.
Valeur par défaut.
 server string = Samba %v
Authentification
        security = user
        domain logons = yes
        username map = /etc/samba/smbusers
security
Ce paramètre est l'un des plus importants de Samba. Il peut prendre les valeurs share, user, server et domain
Le mode share correspond à la possibilité offerte par Win9x d'effectuer un "contrôle d'accès au niveau ressource", c'est à dire par exemple de définir un mot de passe pour le partage quel que soit l'utilisateur.
Le mode user est le mode le plus intéressant : il émule presque parfaitement la majeure partie des fonctionnalités de Windows NT en matière d'authentification, de partage de fichiers et d'imprimantes, en proposant un "contrôle d'accès au niveau utilisateur".
Les modes server et domain se comportent comme le mode user d'un point de vue du client, mais permettent de relayer l'authentification sur un autre serveur Samba, sur un PDC ou un BDC NT.
Valeur par défaut .
security = user
domain logons
Active la fonction contrôleur de domaine de Samba, ce qui permet aux clients Windows de se loguer dans un domaine NT.
Le nom du domaine est celui définit par la variable workgroup.
Valeur par défaut.
domain logons = yes
username map
Permet d'établir une correspondance entre les noms d'utilisateurs Samba et les nom d'utilisateur Unix.
Valeur par défaut.
 username map = /etc/samba/smbusers
Gestion des mots de passe
        encrypt passwords = yes
        smb passwd file = /etc/samba/smbpasswd
encrypt passwords
Valide la négociation des mots de passe cryptés. Par défaut les versions non préhistoriques de Windows (à part les premières versions de Win95 et de WinNT <SP3 ) effectuent les négociations d'authentification en utilisant un mot de passe crypté.
Valeur par défaut .
 encrypt passwords = no
smb passwd file
Emplacement de la version Samba du fichier des mots de passe. Ce fichier contient le login Samba, l’uid, la version cryptée LanMan du mot de passe, la version cryptée NT, et d'autres informations sur le type de compte, sa validité, la date du dernier changement de mot de passe, etc.
Valeur par défaut : smb passwd file = ${prefix}/private/smbpasswd ou
 smb passwd file = /etc/samba/smbpasswd sur une distribution Mandrake
password server
Définit quel est le serveur principal lorsque l'on fonctionne en mode security=server ou security=domain.
Le nom du domaine est celui défini par la variable workgroup.
Valeur par défaut : workgroup
unix password sync
Permet d'éxécuter un programme externe défini par passwd program lors d'un changement de mot passe Samba, afin par exemple de synchroniser le mot de passe Unix.
Valeur par défaut :
unix password sync = no
Passwd program
Si le paramètre unix password sync est à yes, exécute le programme externe lors d'un changement de mot de passe Samba..
Si le programme externe échoue, alors le changement de mot de passe Samba échouera également.
Le programme est exécuté en root, il est donc impératif d'utiliser des chemins absolus et de faire attention aux aspects de sécurité.
(Voir le paramètre unix password sync.)
Exemple .
passwd program = /usr/bin/passwd %u
passwd chat
Définit un dialogue à utiliser avec le paramètre passwd program
(Voir le paramètre unix password sync.)
Exemple . passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
Explorateur de machine
        local master = yes
        os level = 33
        domain master = yes
local master
Définit si Samba doit participer à l'élection du "maître explorateur local" (sur son réseau local, son sous-réseau) pour son domaine.
Valeur par défaut . local master = yes
os level
Cette valeur va influer sur les chances de Samba de remporter les élections de maître explorateur.
Valeur par défaut . os level = 20
domain master
Définit si Samba doit être le "maître explorateur de domaine" pour son domaine. Ceci permet de rassembler les listes de machines fournies par les maîtres explorateur locaux et de leur redistribuer ensuite une liste complète des machines du domaine.
A ne pas utiliser si un PDC Windows NT existe dans le domaine
Valeur par défaut . Dépend de domain logons.
Paramètre de connection utilisateur
Les paramètres de cette section n'ont de sens que si l'on utlise Samba en PDC (voir domain logons)
Exemple :
        logon script = script.bat
        logon path = \\%L\Profiles\%U
        logon drive = p:
        logon home = \\%L\%U\Profile
logon script
Définit le script qui sera exécuté sur le client, lorsque celui viendra se loguer dans le domaine.
logon path
Utilisé par Windows NT pour le stockage du profil utilisateur (NTUSER.DAT, menus, etc ...).
logon home
Chemin réseau du répertoire personnel (type Netbios).
Le chemin prend la syntaxe suivante : logon home=\\SERVEUR\PARTAGE\CHEMIN\VERS\LE\PROFILE. La partie \\SERVEUR\PARTAGE est utilisée par Win9x comme chemin pour le répertoire personnel et le reste (\CHEMIN\VERS\LE\PROFILE) est utilisé pour le stockage du profile (User.dat, menus, etc ...).
logon drive
Ce paramètre, valable uniquement pour des clients NT, définit le lecteur qui sera utlilisé pour la connection au répertoire personnel. (voir logon home)
Résolution de nom
        wins support = no
        wins server = 10.0.0.2
        wins proxy = yes
        dns proxy = no
Casse des noms de fishier
        preserve case = yes # NOTE: These can be set on a per share basis
        short preserve case = no
        default case = lower
        case sensitive = no

preserve case
Maintient la casse (distribution minuscule / majuscule) des noms de fichiers.
Réseau
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        interfaces = 10.0.0.1/32
La section [Homes]
 Cette section permet de déterminer un répertoire personnel par utilisateur samba.
La section [printers]
C’est le répertoire de partage des imprimantes

PARTAGE D’UNE RESSOURCE DISQUE
Les paramètres permettant le partage d’une ressource disque sont résumés dans le tableau ci-dessous.
Une section est toujours désignée par son nom entre crochet.
SECTION
Paramètre
Exemple
Description

[PARTAGE]
path
/home/partage
Chemin du dossier partagé
comment
Mon dossier partagé
Commentaire de la ressource
read only
no
si "no" = on autorise l'écriture dans ce dossier
si "yes" = on ne peut que lire

browseable
yes
si "yes" = la ressource apparaît dans l'explorateur
guest ok
ou
public

yes
Les comptes invité peuvent accéder a cette ressource
Valid users
Koffi yao
Liste des utilisateurs autorisés à accéder à la ressource

Le partage d’une ressource disque ce fait après la section [homes]
Exemple:
On veut créer un répertoire nommé backup (situé dans le répertoire home) dans lequel se trouveront les sauvegardes. Ce répertoire ne doit être accessible (en lecture et en écriture) que par l’utilisateur nommé lea.
La première des choses à faire est la création du répertoire backup par la commande suivante :
#mkdir /home/backup
Ensuite nous allons définir le partage comme suit :
[backup]
Comment=répertoire de sauvegarde
Browseable=yes
Path=/home/backup
Read only=no
Valid users=lea

Création des comptes d’utilisateurs samba
La commande smbpasswd permet de créer des utilisateurs samba la seule condition est que ces utilisateurs doivent posséder un compte UNIX c'est-à-dire  qu’ils doivent être déjà crées comme utilisateurs unix.
Exemple :
 créer des comptes samba pour les utilisateurs suivants :
Mobio, toure, dago, yaokan.
La première des choses est de verifier si ces utilisateurs possèdent chacun un compte unix. Dans le cas contraire il faut le créer avec la commande useradd comme suit :
#useradd mobio
#useradd toure
#useradd dago
#useradd yaokan
Après cette étape nous allons maintenant créer les comptes samba pour nos utilisateurs c’est là qu’intervient la commande smbpasswd.
#smbpasswd –a mobio
#smbpasswd –a toure
#smbpasswd –a dago
#smbpasswd –a yaokan
   A chaque création de compte samba, smbpasswd nous demandera un mot de passe pour chaque utilisateur samba crée.
Nb. Il ne faut jamais oublier de créer un mot de passe samba pour le compte roto car c’est ce compte qui nous permettra d’intégrer les clients Windows au domaine géré par samba.
Créations  des comptes pour les clients windows
Lorsqu'une machine de type Windows 2000 / XP souhaite se connecter à notre contrôleur de domaine, un compte lui correspondant doit être spécifié dans le fichier smbpasswd. Ces comptes se différencient par le fait qu'ils se terminent par un $ et ils ne posséderont ni shell, ni répertoire personnel.


Exemple créer des comptes pour les clients Windows suivants :
ntic1, ntic2, ntic3.
#useradd ntic1$
#useradd ntic2$
#useradd ntic3$
Pour terminer, nous allons ajouter à /etc/samba/smbpasswd les username de nos différents pc c’est à dire les clients Windows à l’aide de la commande smbpasswd comme suit.
#smbpasswd –a –m ntic1$
#smbpasswd –a –m ntic2$
#smbpasswd –a –m ntic3$

Pour terminer la configuration du serveur, nous allons démarrer le service smb avec la commande suivante:
#/etc/init.d/smb start

Pour redémarrer le service nous utiliserons la commande suivante :
#/etc/init.d/smb restart

Pour arrêter le service, nous utiliserons la commande
#/etc/init.d/smb stop


4 Exemple de Configuration complète de samba en PDC.
Nous éditons le fichier de configuration de samba avec l’éditeur vi
#vi /etc/samba/smb.conf

#==============Global Settings ====================
[global]

# workgroup = NT-Domain-Name or Workgroup-Name
   workgroup = cepi.ci

# server string is the equivalent of the NT Description field
   server string = Server de fichier
   netbios name = serveur_cepi

# This option is important for security. It allows you to restrict
# connections to machines which are on your local network.
  hosts allow = 192.168.0.
# if you want to automatically load your printer list rather
# than setting them up individually then you'll need this
   printcap name = /etc/printcap
   load printers = yes
# Put a capping on the size of the log files (in Kb).
   max log size = 50
  security = user
# You may wish to use password encryption. Please read
# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
# Do not enable this option unless you have read those documents
 encrypt passwords = yes
 smb passwd file = /etc/samba/smbpasswd

# The following are needed to allow password changing from Windows to
# update the Linux system password also.
# of the machine that is connecting
   include = /etc/samba/smb.conf.%m
# Most people will find that this option gives better performance.
# See speed.txt and the manual pages for details
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# browser on your network. Otherwise the normal election rules apply
  local master = yes
# OS Level determines the precedence of this server in master browser
# elections. The default value should be reasonable
  os level = 95
# Domain Master specifies Samba to be the Domain Master Browser.
  domain master = yes
# Preferred Master causes Samba to force a local browser election
  Preferred master = yes
# Enable this if you want Samba to be a domain logon server for
# Windows95 workstations.
  domain logons = yes
# If you enable domain logons then you may want a per-machine or
# Per user logon script
# run a specific logon batch file per workstation (machine)
  logon script = %m.bat
  logon path = \\%L\Profiles\%U

#===================== Share Definitions ================
   idmap uid = 16777216-33554431
   idmap gid = 16777216-33554431
   template shell = /bin/false
   winbind use default domain = no
[homes]
   comment = Home Directories
   browseable = yes
   writable = yes
   path=/home/%U

# Un-comment the following and create the netlogon directory for Domain Logons
[netlogon]
   comment = Network Logon Service
   path = /var/samba/netlogon
   guest ok = yes
   writeable = yes
   share modes = yes
   browseable =no

# Un-comment the following to provide a specific roving profile share
# the default is to use the user's home directory

[Profiles]
    path = /var/samba/profiles
    browseable = yes
    guest ok = yes
    writeable = yes

# NOTE: If you have a BSD-style print system there is no need to
# specifically define each individual printer


[printers]
   comment = All Printers
   path = /var/spool/samba
   browseable = no
   public = yes
# Set public = yes to allow user 'guest account' to print
  
   writable = no
   printable = yes

# This one is useful for people to share files
[tmp]
   comment = Temporary file space
   path = /tmp
   read only = no
   public = yes

# A publicly accessible directory, but read only, except for people in
# the "staff" group

[public]
   comment = Public
   path = /home/samba
   public = yes
   only guest = yes
   writable = yes
   printable = no
[save]
Comment = sauvegarde
path = /home/save
guest ok = no
Public = yes
writeable = yes
Valid users = mobio,toure


Après la modification du fichier smb.conf, nous allons créer les répertoires définis pour le partage des fichiers sur notre réseau avec la commande mkdir.

> mkdir /home/%U

> mkdir /var/samba/netlogon

> mkdir /var/samba/profiles

> mkdir /home/samba
       
> mkdir /home/save

Les répertoires suivants ont été créés a l’installation de notre système nous n’avons plus besoin de les créer.
Il s’agit de :

 /var/spool/samba et /tmp

Aucun commentaire:

Enregistrer un commentaire