Configuration de samba

ArticleCategory: [Choose a category for your article]

System Administration

AuthorImage:[Here we need a little image from you]

[Photo of the Author]

TranslationInfo:[Author and translation history]

original in fr �ric Seigne 

AboutTheAuthor:[A small biography about the author]

Je travaille dans le monde des logiciels libres o� je d�veloppe, entre autres, des applications d'acc�s aux bases de donn�es sur le web avec des outils comme PostGreSQL ,MySQL et PHP.
Pour pouvoir garder une certaine libert� dans ma mani�re de travailler (pouvoir "changer de m�tier" de temps en temps, ne pas rester a faire toujours du PHP/MySQL par exemple ... se lancer dans un bon projet C, Java ou autre) je me suis r�cemment install� � mon compte.
Et pour tout arranger, je suis -encore- membre de l'ABUL www.abul.org (et je n'ai pas encore pay� ma cotisation !).

Abstract:[Here you write a little summary]

Je vais essayer de vous exposer ici le travail que nous avons r�alis� dans la mise en place d'un serveur linux-samba comme contr�leur de domaine d'un r�seau Windows.
La gestion des restrictions utilisateurs, les profils itin�rants ... seront expos�s en d�tails.
Ce document est bas� sur une Debian GNU/Linux 2.2 ce qui fait que le fichier smb.conf par d�faut sur votre distribution risque d'�tre l�g�rement diff�rent.
Pour ce qui est de la version de samba utilis�e Samba 2.0.7

ArticleIllustration:[This is the title picture for your article]

[Illustration]

ArticleBody:[The article body]

Installation de Samba

On part du principe que vous connaissez un minimum samba et qu'il est d�j� install� sur votre serveur de test.
Si jamais ce n'etait pas le cas, pour installer samba rapidement, regardez du c�t� de :
Debian: apt-get install samba
RedHat(Mandrake): rpm -vih /mnt/cdrom/RedHat(Mandrake)/RPMS/samba*

Le fichier de configuration: informations g�n�rales

Samba utilise un fichier de configuration unique dans lequel se trouvent des blocs comme par exemple le bloc [global].

Un seul fichier de configuration pour samba !

<fichier smb.conf minimal>
[global]
   printing = bsd
   printcap name = /etc/printcap
   load printers = yes
   guest account = pcguest

   log file = /usr/local/samba/log.%m

[tmp]
  comment = Temporary file space
  path = /tmp
  read only = yes
  public = yes
</fichier>
    

Si samba est lanc� avec ce fichier de configuration, les postes windows du r�seau local pourront voir dans le voisinage r�seau qu'un ordinateur nomm� (le nom de votre machine linux) partage un r�pertoire temp dans lequel vous avez le droit d'�crire.

ATTENTION: lorsque vous mettez � jour le fichier de configuration de samba, pensez � relancer samba � l'aide du script/etc/init.d/samba restart (pour debian)

Le fichier de configuration, param�tres "avanc�s"

Voyons maintenant les param�tres suivants:

Les variables de samba

Variable D�finition
Variables du client
%a Architecture du client
Exemple: Win95, WfWg, WinNT, Samba ...
%I Adresse IP du client
%m Nom NetBios du client
%M Nom DNS du client
Variables utilisateur
%g Groupe primaire de l'utilisateur %u
%H R�pertoire home de l'utilisateur %u
%u Nom de l'utilisateur unix courant
Variables de partage
%P Racine du partage actuel
%S Nom du partage actuel
Variables du serveur
%h Nom DNS du serveur Samba
%L Nom NetBios du serveur Samba
%v Version de Samba
Variables diverses
%T La date et l'heure courantes

Exemple d'utilisation de ces variables: si vous avez dans votre r�seau des windows 3.11 (windows for workgroup) et des 98, vous pourrez - � l'aide de la variable %a - faire deux fichiers de configuration qui seront adapt�s � ces deux syst�mes.

R�sultat: notre fichier de configuration

<fichier smb.conf>
[global]
printing = bsd
printcap name = /etc/printcap
load printers = yes
guest account = nobody
invalid users = root

; on "fixe" son nom netbios
netbios name = pantoufle
; le r�seau � �couter n'est
; que celui-ci (sur l'autre interface on a la connexion internet,
: pas la peine d'avoir du samba de ce c�t� !)
interfaces = 192.168.0.1/255.255.255.0

; security user implique que tout utilisateur DOIT
; avoir un compte unix sur ce serveur :)
security = user
; Le nom du groupe de travail dont ce serveur est membre
workgroup = rycks
; La description du serveur, visible lorsqu'on affiche les d�tails
; %h �tant le nom DNS du serveur et %v la version de samba
server string = %h server (Samba %v)

; On utilise encore le fichier de log de samba, et pas que celui de syslog
syslog only = no

; Le minimum d'informations importantes dans le syslog,
; le reste �tant toujours dans /var/log/smb(nmb)/
syslog = 0;

; Vive le tuning !
socket options = IPTOS_LOWDELAY TCP_NODELAY \
SO_SNDBUF=4096 SO_RCVBUF=4096

; On utilise les mots de passe encrypt�s. Attention
; tous les clients W95 devront
; �tre mis � jour avec le patch s�curit�
; SMB de MS. De m�me NT4 devra �tre patch�
; par le SP3 ou mieux ... Pour le W3.11 je ne sais plus,
; ils ne doivent probablement pas supporter les mots de passe encrypt�s :(
encrypt passwords = yes

; Ce serveur fait �galement office de serveur WINS.
; WINS permet � deux r�seaux qui utilisent
; des plages d'IP diff�rentes (par exemple
; 192.168.0.0/255.255.255.0 et 192.168.0.1/255.255.255.0)
; de voir les ressources partag�es dans "l'autre"
; r�seau, si la passerelle est active.
wins support = yes

; Niveau de l'OS. Comme notre serveur se charge d'�tre le
; ma�tre du domaine, local logons etc. Il est donc au-dessus
; du serveur NT s'il y en a un !
os level = 34

; On fait la gestion du domaine
domain master = yes
local master = yes
preferred master = yes

; On assure la centralisation des connexions du domaine
domain logons = yes

; Quel script lancer lorsqu'un client se connecte ?
; %g correspond au nom du groupe primaire dont fait partie
; cet utilisateur.
logon script = %g.bat
; Dans quel r�pertoire se trouvent les fichiers de d�marrage ?
; %L est le nom netbios du serveur samba
logon path=\\%L\netlogon
; Ou faudra-t-il stocker les profils itin�rants des utilisateurs ?
; %U est le login de l'utilisateur
logon home=\\%L\%U\winprofile

; Dans quel ordre faire appel aux ressources
; pour trouver le nom d'une machine ?
; Notez le broadcast en FIN ... pas comme les
; windows classiques qui balancent
; r�guli�rement des broadcasts.
name resolve order = lmhosts host wins bcast

; Samba doit-il faire office de proxy DNS ?
dns proxy = no

; Respect des noms de fichiers et de leur casse
preserve case = yes
short preserve case = yes

; Faut-il synchroniser les mots de passe windows et linux ?
unix password sync = yes

; Que faut-il mettre en place pour la synchronisation des mots de passe
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* \
%n\n *Retype\snew\sUNIX\spassword:* %n\n .

; La taille maximum du fichier de log, �vite de saturer son /var :p
max log size = 1000

; On fait office de serveur de temps, c'est
; pratique que toutes les machines du r�seau soient un tant soit peu
; synchronis�es. On utilisera cette fonctionnalit� dans le fichier .bat
; de logon
time server = yes

; On sp�cifie o� se trouve le netlogon
; Il ne sera utilis� que lors de la connexion,
; c'est pour cela que ce n'est pas n�cessaire qu'il soit public etc.
[netlogon]
path = /home/netlogon/%g
public = no
writeable = no
browseable = no

; Le r�pertoire Home de chaque utilisateur
[homes]
comment = Home Directories
browseable = no

; Il a quand m�me le droit d'y �crire !
read only = no

; Le masque Unix de cr�ation de fichier par d�faut
create mask = 0700

; Pour des raisons de s�curit�, on met un masque de r�pertoire � 700 aussi !
directory mask = 0700

; On partage le FTP, c'est plus pratique de l'avoir dans le voisinage r�seau
; que de devoir lancer un utilitaire sp�cial.
[ftp]
path = /home/ftp/pub
public = yes
printable = no
guest ok = yes

; Le r�pertoire temporaire
[tmp]
path = /tmp
public = yes
printable = no
guest ok = yes
writable = yes

; un autre temporaire sp�cial pour un utilisateur exigeant beaucoup d'espace !
[bigtemp]
path = /home/bigtemp
public = yes
printable = no
guest ok = yes
valid users = erics
writable = yes

</fichier>

Ce qu'on a sur le serveur

En bref, sur le serveur, on doit avoir:

<fichier /home/netlogon/admin.bat>
net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES
</fichier admin.bat>
    
<fichier /home/netlogon/professeurs/professeurs.bat>
net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES
regedit /s \\pantoufle\netlogon\professeurs.reg
</fichier professeurs.bat>
    
<fichier /home/netlogon/eleves/eleves.bat>
net use P: \\pantoufle\homes
net use T: \\pantoufle\tmp
net time \\pantoufle /SET /YES
regedit /s \\pantoufle\netlogon\eleves.reg
</fichier eleves.bat>
    
<fichier /home/netlogon/professeurs/professeurs.reg>
[HKEY_CURRENT_USER\Software\Microsoft\Windows
\CurrentVersion\Explorer\User Shell Folders]
"Personal"="P:\\"
</fichier professeurs.reg>
    
<fichier /home/netlogon/eleves/eleves.reg>
[HKEY_CURRENT_USER\Software\Microsoft\Windows
\CurrentVersion\Explorer\User Shell Folders]
"Personal"="P:\\"
</fichier eleves.reg>
    

Ce fichier permet au lancement, de monter automatiquement le r�pertoire personnel de l'utilisateur en P: et le r�pertoire temporaire sur T:. De m�me, on r�gle l'horloge syst�me sur celle du serveur samba.

REMARQUE: les retours � la ligne du fichier .bat doivent �tre en "mode DOS", le plus simple est de cr�er ce fichier sous windows avec notepad par exemple et de l'envoyer sur le serveur apr�s.

Cr�ation de la politique de s�curit� du syst�me (C) (TM) (R)

S�curiser Windows, c'est presque possible, gr�ce � un contr�leur de domaine.

Un titre ronflant ... normal je l'ai trouv� dans une doc MS a propos de leur outil de politique syst�me

Donc, pour cr�er une politique syst�me Windows, par exemple interdire � certains utilisateurs (tous ?) de lancer regedit, un programme DOS etc. il faut utiliser POLEDIT qui se trouve sur le CDROM de windows 98

Lancez PolEdit, regardez son aide, notez les informations, cette documentation n'a pas pour but de vous expliquer comment marche un logiciel propri�taire.

Une fois que vous avez votre fichier .POL de fait, copiez-le sur votre serveur samba, dans le r�pertoire point� par la directive PATH du groupe [netlogon]

ATTENTION: Pour des clients W9x le fichier de strat�gie syst�me doit �tre CONFIG.POL ... pour les WindowsNT ce n'est pas le m�me nom, et comme je n'ai pas de NT, je ne peux pas vous en parler :'(
Non, ce n'est pas la peine de m'offrir un windowsNT pour que je teste. Merci quand m�me c'�tait sympa de votre part :o)

REMARQUE PolEdit Permet de cr�er des groupes d'utilisateurs et des utilisateurs, nous n'avons pas encore r�ussi � faire en sorte que �a marche. Seul l'utilisateur par d�faut est pris en compte.

Par exemple, si dans PolEdit je cr�e un groupe d'utilisateurs "admin" qui aura le droit de lancer regedit, je me connecte en tant que "erics" (dont le groupe primaire est "admin" et je n'ai quand m�me pas le droit de lancer regedit :(

Par contre, si j'avais cr�� un utilisateur "erics" dans poledit, �a aurait march�.

Comme nous n'avons pas envie de cr�er les 1056 utilisateurs dans poledit, et que la gestion globale des utilisateurs est plus int�ressante, nous vous proposons l'astuce suivante:

Pour faire face � cela, nous avons rus�: on a fait 3 fichiers config.pol avec seulement des utilisateurs par d�faut, et sur le serveur linux, on a:
/home/netlogon/professeurs/CONFIG.POL
/home/netlogon/professeurs/professeurs.bat
/home/netlogon/eleves/CONFIG.POL
/home/netlogon/eleves/eleves.bat
/home/netlogon/admin/CONFIG.POL
/home/netlogon/admin/admin.bat
Et on a modifi� le smb.conf pour que cela soit pris en compte:

<fichier smb.conf>
[netlogon]
; on a rajout� le %g pour que selon
; le groupe de l'utilisateur netlogon pointe
; vers un r�pertoire diff�rent
; dans lequel le config.pol correspond �
; chaque groupe de profil utilisateur.
path = /home/netlogon/%g
public = no
writeable = no
browseable = no
</fichier smb.conf>

Configuration des postes Windows

Avec un peu de chance, 20 clics de souris et 1 reboot pour configurer windows !

Pour un poste client type Win98

Cliquer sur D�marrer/Param�tres/Panneau de configuration puis double-cliquer sur R�seau

Installer:

Cliquez ensuite sur l'onglet "Identification" et renseignez le nom de l'ordinateur ainsi que le groupe de travail dans lequel vous voulez �tre.

Cliquez sur "Contr�le d'acc�s" et cochez la case de contr�le d'acc�s au niveau utilisateur

Revenez sur l'onglet configuration et double-cliquez sur "Client pour les r�seaux MS"

N'oubliez pas de configurer votre support TCP/IP:
Double-cliquez sur TCP/IP

Remarques "tuning/performances/bon sens ?"

A l'utilisation, il apparait tr�s rapidement un engorgement du r�seau d� � l'utilisation des profils itin�rants de windows.

En effet, dans le profil on "trimbale" plein de trucs que MS a d�cid� comme �tant importants, comme par exemple, le cache de IE, celui de Outlook etc.

En bref, cela implique par exemple que 10 Mo de fichiers seront t�l�charg�s lors de la connexion � un poste (mon profil est "classique", une image de fond, ie et outlook ...) et 10 Mo seront envoy�s sur le serveur lorsque je me d�connecte.

10 Mo par utilisateurs, prenons une salle de 15 machines (taille "normale" d'une salle de TP informatique par exemple), 150 Mo, et si y a 10 salles dans le b�timent ... calculez le temps de d�connexion des utilisateurs lorsque la sonnerie de la pause se d�clenche.

Mieux vaut anticiper le mouvement et se d�loger � -5 ... (heu, j'avoue lors des TP VC++ c'est ce que je faisais � tous les coups) ... que � pile ou � 5, comme pour les bouchons sur le p�rif, il faut passer soit 10 minutes avant, soit 2 heures apr�s !

Donc, au vu de ce probl�me important, et selon la politique que vous mettez en place, il serait parfois astucieux de monter pour tout le monde son r�pertoire home sur P: (par exemple, P comme Perso) et de former les utilisateurs: "sauvegardez vos documents sur P et pas dans "Mes documents" sinon vous ne les retrouverez pas".

Reste ensuite � trouver les logiciels qui peuvent �tre configur�s pour avoir leur bookmark sur P:\bookmarks.html et ainsi de suite pour les param�tres.

Je ne sais tout simplement pas si �a existe dans le monde windows!

Si jamais vous avez une solution miracle, faites-en un article, c'est un savoir qu'il faut partager !

 

Questions et ouverture vers une suite � cet article

Il est possible d'avoir plusieurs WorkGroups sur un m�me domaine, comme cela se g�re, peut-on r�partir les probl�mes entre plusieurs GNU/Linux Samba ?

Comment faire cohabiter des serveurs NT et Samba ?

Configurer des clients NT, le CONFIG.POL �quivalent sous NT porte un autre nom.

Un probl�me concret de n'avoir qu'un serveur Samba (et pas de NT), je suis sur un poste Windows (98) et je souhaite partager une ressource locale, mon imprimante par exemple:

Affichage du partage de l'imprimante de mon poste

Apr�s le clic sur le bouton Ajouter...

HOT NEWS : La solution � ce petit probl�me m'a �t� donn�e, il suffit en effet de s�lectionner "Contr�le d'acc�s niveau ressource" � l'�tape 3 de la configuration de votre poste windows.

Remerciements

Bruno pour sa relecture attentive et ses pr�cisions pr�cieuses :o)

JohnPerr pour m'avoir incit� � �crire mon 1er article sur LinuxFocus, et l'avoir traduit en anglais
Michel Billaud aka MiB pour toutes tes solutions, � chaque fois qu'on a un probl�me, tu nous apprends des trucs, strace etc. :o)
Etienne, �ric, et l'homme invisible dont j'ai mang� le nom, je suis d�sol� ! Donc, merci de nous avoir transmis votre savoir issu des cours MS sur les serveurs NT
Jean Peyratout, est-il indispensable de dire pourquoi ? c'est trop long
L'Abul en g�n�ral
Rycks pour m'accorder du cr�dit-temps et des ressources pour d�velopper et documenter "du libre".

Ressources

La version en ligne du livre de O'Reilly: http://www.oreilly.com/catalog/samba/chapter/book/index.html

N'oubliez pas que ce document sera mis � jour sur la partie documentation de rycks.com

Pour me contacter: �ric Seigne