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)
- LanMan ager
- NetBIOS
Le fonctionnement de 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)
- Lan
- 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. *
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 ;
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.
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=MONDOMAINEnetbios 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 Lan
Valeur par défaut : smb passwd file = ${prefix}/private/smbpasswd ou
smb passwd file = /etc/samba/smbpasswd sur une distribution
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