Les réseaux Windows utilisent un ensemble de protocoles pour le partage de fichiers et d’imprimantes. Samba est le logiciel Open Source qui implémente ces protocoles. Ce LinuxLabs vise à présenter les capacités de machines BSD ou GNU/Linux à s’intégrer dans une réseau Windows.
Samba met en oeuvre le protocole SMB (Server Message Block). Dans l’ancien Windows NT 4, il était appelé CIFS (Common Internet File System). Dans Vista et Seven, il est appelé SMB2. Samba vise l’interopérabilité des systèmes autour du protocole.
1. Arrière-plan
Samba 3.6.5 est la dernière version stable publiée le 30 avril 2012. Voici ce que Samba peut faire :
- Offrir un service de partage des fichiers et d’imprimantes des clients GNU/Linux, UNIX/BSD, et Windows;
- Assister à la découverte du réseau (avec ou sans NetBIOS)
- Authentifier des utilisateur sur un domaine Windows.
- Fournir un serveur de résolution de noms Windows Internet Name Service (WINS).
- Agir en tant que Windows NT-style Primary Domain Controller (PDC)
- Agir en tant que Backup Domain Controller (BDC) pour un PDC Samba
- Agir en tant que membre d’un domaine Active Directory (AD)
- Joindre un PDC Windows NT/2000/2003/2008
Ce que Samba ne peut pas faire :
- Agir en tant que BDC pour un PDC Windows (et inversément)
- Agir en tant que contrôleur de domaine AD.
Il supporte les fonctionnalités SMB2 (Vista et Seven). Il peut-être complété par une solution Open Source de déploiement d’application : http://wpkg.org/WPKG_overview:fr.
Samba 4 propose des fonctionnalités alléchantes. La version future est toujours en développement, mais elle mériterait d’être testée.
2. Préceptes
On lira la documentation The Official Samba 3.5.x HOWTO and Reference Guide.
Samba intègre deux démons :
- smbd assure le partage des ressources et occupe le port TCP 139 (Session NetBIOS) et TCP 445 (Service d’annuaire Microsoft).
- nmbd assure le service WINS et occupe les ports UDP 137 (Service de noms NetBIOS) et UDP 138 (données NetBIOS).
Il utilise aussi winbind pour les logons Windows.
D’autres logiciels ou scripts sont à utiliser selon les scénarios.
- Pour chaque partage on créer un espace appartenant à un
- un groupe d’utilisateurs système
- qui a des droits spécifiques sur le système de fichier
- un utilisateur système avec mot de passe
- qui est dans le groupe précité
- une synchronisation smbpasswd sera nécessaire
Les machines sont dans le même LAN.
Le server se configure dans le fichier /etc/samba/smb.conf constitué d’une section gloable et de sections concernant chaque partage. On s’attardera sur les modes de fonctionnement « security » : « user », « domain » et « ads ».
On se base sur le document http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/FastStart.html pour les exercices.
Exercice 1. Partage simple
1.1. préparation
apt-get update
apt-cache show samba-common
apt-get install samba
more /etc/samba/smb.conf
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
1.2. Partage simple
Voici un configuration typique qui permet de partager dans un Workgroup « LOCAL » un espace de fichiers en lecture seule pour les membres du Workgroup. Le nom NetBIOS du serveur est « SAMBASERVER ». Le nom du partage est « data ».
nano /etc/samba/smb.conf.master
1.3. Modification de smb.conf.master, configuration du partage et du serveur de fichiers
[global] workgroup = LOCAL netbios name = SAMBASERVER security = SHARE
[data] comment = Data path = /home/partage force group = utilisateurs read only = No guest ok = Yes
1.4. Création de smb.conf vérifié
testparm -s smb.conf.master > smb.conf
1.5. Ajout des comptes et des droits
groupadd utilisateurs
useradd -g utilisateurs -d /home/partage -m -s /bin/false utilisateur1
passwd utilisateur1
id utilisateur1
smbpasswd -a utilisateur1
net rpc user
mkdir /home/partage
ls -l /home/partage
chown root:utilisateurs /home/partage
chmod 1775 /home/partage
ls -l /home/partage
1.6. Test sur différents clients.
Exercice 2. Contrôleur de domaine
Scénario
Une entreprise type de 7 rôles dans 3 groupes dans le domaine « entreprise » :
- utilisateur, groupe, privilège
- directeur, direction, administrateur
- sdirecteur, direction, administrateur
- comptable, compta, super-utilisateur
- aide-comptable, compta, super-utilisateur
- commercial1, commercial, simple utilisateur
- commercial2, commercial, simple utilisateur
- secretaire, commercial, simple utilisateur
Chaque utilisateur accède à son lecteur réseau personnel et à un lecteur réseau commun appelé « partage » où tout le monde peut écrire.
Il y également un partage par groupe. Le groupe « direction » a accès à tous les partages.
On utilisera les profils itinérants. Ils sont stockés sur le serveur.
On donnera des privilèges Microsoft aux utilisateurs.
On utilisera les lettres réseau suivantes :
- M: Lecteur personnel
- X: « partage » commun
- R: partage « direction »
- S: partage « compta »
- T: partage « commercial »
Opérations
- Définition du serveur et des partages (smb.conf)
- Création des groupes systèmes
- Création des utilisateurs systèmes
- Smbpasswd
- Vérification net rpc user
- smbpasswd -a root
- Correspondance groupes GNU/Linux et Microsoft
- Ajout des utilisateurs aux groupes (privilèges)
- Création des répertoires partagés
- /netlogon
- /profils
- /commun
- /direction
- /comptabilité
- /commercial
- logon script
Autres applications.
Intégration DNS Bind9
Connection à un AD/LDAP
Authentification LDAP
Accès aux partages
Partage d’imprimantes et imprimante PDF
Corbeille
Anti-virus
activation SMB2


http://ferry.eof.eu.org/lesjournaux/rlr/public_html/multipage/x7612.html
root@server10:/etc/samba# groupadd direction
root@server10:/etc/samba# groupadd compta
root@server10:/etc/samba# groupadd commercial
useradd -g direction -d /home/directeur -m -s /sbin/nologin directeur
useradd -g direction -d /home/sdirecteur -m -s /sbin/nologin sdirecteur
useradd -g compta -d /home/comptable -m -s /sbin/nologin comptable
useradd -g compta -d /home/aide-comptable -m -s /sbin/nologin aide-comptable
useradd -g commercial -d /home/commercial1 -m -s /sbin/nologin commercial1
useradd -g commercial -d /home/commercial2 -m -s /sbin/nologin commercial2
useradd -g commercial -d /home/secretaire -m -s /sbin/nologin secretaire
smbpasswd -a directeur
smbpasswd -a sdirecteur
smbpasswd -a comptable
smbpasswd -a aide-comptable
smbpasswd -a commercial1
smbpasswd -a commercial2
smbpasswd -a secretaire
groupadd invites
groupadd utilisateur
groupadd utilisateurpouvoir
groupadd administrateur
net groupmap add ntgroup= »Domain Guest » unixgroup= »invites » rid= »514″
net groupmap add ntgroup= »Domain Users » unixgroup= »utilisateur » rid= »513″
net groupmap add ntgroup= »Builtin Power Users » unixgroup= »utilisateurpouvoir » rid= »547″
net groupmap add ntgroup= »Domain Admins » unixgroup= »administrateur » rid= »512″
gpasswd -a directeur administrateur
gpasswd -a sdirecteur administrateur
gpasswd -a comptable utilisateurpouvoir
gpasswd -a aide-comptable utilisateurpouvoir
gpasswd -a commercial1 utilisateur
gpasswd -a commercial2 utilisateur
gpasswd -a secretaire utilisateur
mkdir /share
mkdir /share/samba
mkdir /share/samba/netlogon
chmod 755 /share/samba/netlogon
mkdir /share/samba/profils
chmod 1777 /share/samba/profils/
mkdir /share/samba/direction
mkdir /share/samba/compta
mkdir /share/samba/commercial
chmod 770 /share/samba/direction/
chmod 770 /share/samba/compta/
chmod 770 /share/samba/commercial/
nano -D /share/samba/netlogon/direction.bat
net time \\SERVEUR10 /set /yes
net use x: \\SERVEUR10\commun
net use r: \\SERVEUR10\direction
net use s: \\SERVEUR10\compta
net use t: \\SERVEUR10\commercial
[global]
workgroup = ENTREPRISE
server string = Serveur Samba %v
netbios name = SERVEUR3
# Controleur de domaine
domain logons = yes
domain master = yes
local master = yes
OS level = 80
logon script = %g.bat
wins support = yes
time server = yes
logon path = \\%L\profiles\%U
logon drive = H:
# Scripts
add user script = /usr/sbin/useradd « %u »
add group script = /usr/sbin/groupadd « %g »
add machine script = /usr/sbin/useradd -g machine -c « Machine (%u) » -M -d /dev/null -s /bin/false « %u »
delete user script = /usr/sbin/userdel « %u »
delete user from group script = /usr/sbin/userdel « %u » « %g »
delete group script = /usr/sbin/groupdel « %g »
[homes]
comment = Répertoire personnels
browseable = no
writeable = yes
[netlogon]
comment = Netlogon
path = /share/samba/netlogon
guest ok = yes
writeable = no
[profiles]
path = /share/profils
browseable = no
guest ok = yes
[commun]
path = /share/samba/commun
comment = Partage Commun
writeable = yes
force create mode = 0666
force directory mode = 1777
[direction]
path = /share/samba/direction
comment = Partage Direction
write list = @direction
force group = direction
force create mode = 0660
force directory mode = 1770
[compta]
path = /share/samba/compta
comment = Partage Compta
write list = @direction, @compta
[commercial]
path = /share/samba/commercial
comment = Partage Commercial
write list = @direction, @commercial