You are on page 1of 41

Support de cours Serveur de fichiers Samba

2003, Sbastien Namche (sebastien@nameche.fr) - 1

Ce document peut tre librement lu, stock, reproduit, diffus, traduit et cit par tous moyens et sur tous supports aux conditions suivantes : tout lecteur ou utilisateur de ce document reconnat avoir pris connaissance de ce qu'aucune garantie n'est donne quant son contenu, tous points de vue, notamment vracit, prcision et adquation pour toute utilisation ; il n'est procd aucune modification autre que cosmtique, changement de format de reprsentation, traduction, correction d'une erreur de syntaxe vidente, ou en accord avec les clauses ci-dessous ; le nom, le logo et les coordonnes de l'auteur devront tre prservs sur toutes les versions drives du document tous les endroits o ils apparaissent dans l'original, les noms et logos d'autres contributeurs ne pourront pas apparatre dans une taille suprieure celle des auteurs prcdents, des commentaires ou additions peuvent tres insrs condition d'apparatre clairement comme tels ; les traductions ou fragments doivent faire clairement rfrence une copie originale complte, si possible une copie facilement accessible ; les traductions et les commentaires ou ajouts insrs doivent tre dats et leur(s) auteur(s) doi(ven)t tre identifiable(s) (ventuellement au travers d'un alias) ; cette licence est prserve et s'applique l'ensemble du document et des modifications et ajouts ventuels (sauf en cas de citation courte), quelqu'en soit le format de reprsentation ; quel que soit le mode de stockage, reproduction ou diffusion, toute version imprime doit contenir une rfrence une version numrique librement accessible au moment de la premire diffusion de la version imprime, toute personne ayant accs une version numrise de ce document doit pouvoir en faire une copie numrise dans un format directement utilisable et si possible ditable, suivant les standards publics, et publiquement documents en usage ; la transmission de ce document un tiers se fait avec transmission de cette licence, sans modification, et en particulier sans addition de clause ou contrainte nouvelle, explicite ou implicite, lie ou non cette transmission. En particulier, en cas d'inclusion dans une base de donnes ou une collection, le propritaire ou l'exploitant de la base ou de la collection s'interdit tout droit de regard li ce stockage et concernant l'utilisation qui pourrait tre faite du document aprs extraction de la base ou de la collection, seul ou en relation avec d'autres documents.

Toute incompatibilit des clauses ci-dessus avec des dispositions ou contraintes lgales, contractuelles ou judiciaires implique une limitation correspondante : droit de lecture, utilisation ou redistribution verbatim ou modifie du document. Adapt de la licence Licence LLDD v1, octobre 1997, Libre reproduction Copyright Bernard Lang [F1450324322014] URL : http://pauillac.inria.fr/~lang/licence/lldd.html L'original de ce document est disponible cette URL : http://sebastien.nameche.fr/cours

2003, Sbastien Namche (sebastien@nameche.fr) - 2

Introduction
Samba est une suite logicielle implmentant le protocole SMB* (Server Message Block) sur les systmes Unix. Samba implmente le cot serveur de ce protocol et permet ainsi de partager des ressources (rpertoires, imprimantes, etc.) vers des clients rseaux Windows, Linux, OS/2, etc. Il implmente galement la partie cliente de SMB, offrant ainsi la possibilit aux systmes Unix d'accder aux ressources partages par des systmes d'exploitation Microsoft.
* Appel encore CIFS (Common Internet File System, RFC 1001 et 1002), LanManager ou NetBIOS.

2003, Sbastien Namche (sebastien@nameche.fr) - 3

Composantes
Les composantes de Samba sont les suivantes : - smbd : le dmon qui gre le partage des ressources ; - nmbd : le dmon qui implmente la rsolution des noms NetBIOS ; - winbind : qui permet d'utiliser les listes d'utilisateurs et groupes de serveurs NT et 2000 ; - smbclient : fournit une interface en ligne de commande pour accder des partages Windows ; - smbfs/smbmount : permettent de monter des partages Windows sur un systme de fichiers Unix.

2003, Sbastien Namche (sebastien@nameche.fr) - 4

Fichier de configuration smb.conf


L'ensemble des directives de configuration de Samba sont contenues dans le fichier smb.conf. Le nombre de directives de configuration est assez lev car Samba propose de nombreuses options. De plus, plusieurs de ces directives possdent des synonymes. Conformment la tradition Unix, ce fichier est un fichier texte qu'il est possible de modifier avec n'importe quel diteur de texte Unix. Il est organis sous forme de sections qui contiennent des paires de directive/valeur. Exemple :
[global] server string = Serveur Lucky Luke

2003, Sbastien Namche (sebastien@nameche.fr) - 5

Swat et Webmin
Deux alternatives existent l'dition pure du fichier smb.conf : - Swat ; - Webmin.

2003, Sbastien Namche (sebastien@nameche.fr) - 6

Le serveur de fichier smbd


Le dmon smbd utilise toutes les sections du fichier smb.conf. Parmi ces sections, certaines ont une signification particulire : - [global] : contient l'ensemble des directives de configuration gnrale du serveur ainsi que les paramtres par dfaut des partages ; - [homes] : permet de partager simplement le rpertoire de chacun des utilisateurs ; - [printers] : pour fournir les paramtres par dfaut de toutes les imprimantes partages du systme. Les autres sections reprsentent chacune un partage.

2003, Sbastien Namche (sebastien@nameche.fr) - 7

Exemple
[global] # Paramtres gnraux workgroup = LUKE load printers = yes security = user # Valeur par dfaut pour les partages writable = yes [homes] comment = Espaces personnels browseable = no [printers] # Valeurs par dfaut pour toutes les imprimantes writable = no printable = yes [partage] comment = Espace commun path = /home/shared

2003, Sbastien Namche (sebastien@nameche.fr) - 8

Variables de substitution
Beaucoup de valeurs du fichier smb.conf peuvent contenir une ou plusieurs variables de substition. Par exemple :
log file = /var/log/samba/%m.log

%u %g %S %m %L %M %I %$(var)

Voici la liste des variables les plus utiles : nom de l'utilisateur groupe de l'utilisateur nom du partage nom de la machine cliente nom du serveur nom Internet de la machine cliente adresse IP de la machine cliente valeur de la variable d'environnement var
[groupe] path = /home/groupes/%g

Autre exemple :

2003, Sbastien Namche (sebastien@nameche.fr) - 9

Section [global]
Paramtres gnraux
workgroup = string server string = string

Paramtres d'impression
load printers = yes/no printing = bsd/lprng/cups/etc.

Paramtres de scurit
allow hosts = list deny hosts = list guest account = string

2003, Sbastien Namche (sebastien@nameche.fr) - 10

Section [global]
Paramtres d'authentification
security = share/user/server/domain encrypt passwords = yes/no

Paramtres des journaux


log file = string max log size = integer debug level = integer

2003, Sbastien Namche (sebastien@nameche.fr) - 11

Partages
Paramtres gnraux
comment = string browseable = yes/no path = string

Paramtres de case des caractres


mangle case = yes/no case sensitive = yes/no default case = upper/lower preserve case = yes/no short preserve case = yes/no

Par dfaut, Samba n'est pas sensible la case des caractres mais il la prserve.

2003, Sbastien Namche (sebastien@nameche.fr) - 12

Partages
Paramtres de contrle d'accs
valid users = list public = yes/no invalid users = list write list = list read list = list

Paramtres de gestion des droits


read only = yes/no writable = yes/no create mask = rights directory mask = rights force user = string

Une liste d'utilisateurs peut contenir des groupes : @groupe. Les droits s'expriment sous forme octale : 0644.

2003, Sbastien Namche (sebastien@nameche.fr) - 13

Partages, exemple
[global] # Une trs bonne ide invalid users = root [ressources] comment = Ressources d'installation path = /home/data/ressources read only = yes write liste = @admins public = yes [temp] comment = Attention, ce rpertoire est nettoy toutes les nuits path = /home/data/temp create mask = 0666 directory mask = 0777 public = yes read only = no

2003, Sbastien Namche (sebastien@nameche.fr) - 14

Imprimantes
Paramtres gnraux
printable = yes/no printer = string

De plus, les partages d'imprimantes tant des partages particuliers, l'ensemble des directives applicables aux partage, vues prcdemment, le sont galement aux imprimantes (bien que certaines n'aient pas de sens dans ce contexte).

2003, Sbastien Namche (sebastien@nameche.fr) - 15

Imprimantes, exemple
[global] load printers = yes [printers] browseable = no path = /tmp printable = yes public = yes writable = no create mode = 0700

[couleur] printer = lpcolor valid users = seb @staff browseable = no path = /tmp printable = yes writable = no create mode = 0700 comment = Imprimante couleur

2003, Sbastien Namche (sebastien@nameche.fr) - 16

Le rsolveur nmbd
Le dmon smbd a les tches suivantes : - fournir les parties cliente et serveur de WINS ; - participer aux lections ; - rpondre aux requtes du rseau pour les rsolutions de nom. Il est configur via certaines directives de la section [global] du fichier smb.conf. Attention : l'activation de certaines valeurs sur certaines directives peuvent rendre bancale le rseau Microsoft si des contrleurs de domaine ou master browsers sont dj prsents.

2003, Sbastien Namche (sebastien@nameche.fr) - 17

Le rsolveur nmbd
Paramtres de rsolution de noms
name resolve order = list of lmhosts host wins bcast dns proxy = yes/no

Paramtres WINS
wins support = yes/no wins server = address

(ces directives s'excluent mutuellement)

Paramtres affectant le comportement du browser


local master = yes/no preferred master = yes/no os level = integer domain master = yes/no

2003, Sbastien Namche (sebastien@nameche.fr) - 18

Le rsolveur nmbd, exemple


Configuration typique si Samba est PDC
[global] workgroup = MYNET name resolve order = lmhosts host bcast wins support = yes local master = yes preferred master = yes os level = 10 domain master = yes

Configuration utiliser si un PDC NT ou 2000 existe pour le domaine MYNET


[global] workgroup = MYNET name resolve order = wins bcast wins server = 192.168.2.10 local master = no preferred master = no domain master = no

2003, Sbastien Namche (sebastien@nameche.fr) - 19

Authentification
Samba, travers la directive security, reconnat quatre configurations possibles pour l'authentification : - share : mot de passe par partage ; - user : mot de passe par utilisateur (base Unix) ; - server : authentification auprs d'un serveur NT ; - domain : authentification auprs du PDC ou BDC d'un domaine. Par ailleurs, la directive encrypt passwords contrle si les mots de passe doivent tre crypts par les clients. Elle doit avoir la valeur yes obligatoirement pour les authentification server ou domain. Si l'authentification est share ou user, alors la directive smb passwd file doit tre utilise pour donner le nom du fichier qui stocke les mots de passe crypts.

2003, Sbastien Namche (sebastien@nameche.fr) - 20

UID et GID
Quelque soit la mthode d'authentification utilise, au final, un utilisateur (UID) et un groupe (GID) Unix doivent tre associs au client qui se connecte un partage. Ce qui veut dire : - que l'utilisateur et le groupe doivent exister dans la base Unix (fichers /etc/passwd et /etc/group) ; - ou que des directives telles que guest ok, user, etc. sont utilises au niveau du partage ; - ou qu'un mcanisme est mis en place pour aller chercher ces informations dans une base externe (NIS, LDAP, domaine NT via winbind, etc.). Ces UID et GID effectifs associs la connexion permettent de contrler les droits d'accs Unix aux rpertoires et aux fichiers.

2003, Sbastien Namche (sebastien@nameche.fr) - 21

Authentification share
Cette mthode est plutt dsute. Elle fait rfrence la mthode d'authentification qui tait utilise par les clients Windows for Workgroups 3.11 ! Exemple :
[global] security = share [unpartage] path = /home/partage user = partage

2003, Sbastien Namche (sebastien@nameche.fr) - 22

Authentification user
Cette authentification est utilise lorsque le serveur Samba est utilis seul dans le domaine. Les mots de passe des utilisateurs sont vrifis auprs de la base des mots de passe Unix ou du fichier smbpasswd s'ils sont crypts (ce qui est dsormais gnralement le cas). Exemple :
[global] security = user encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\spassword:* %n\n *Retype\snew\spassword:* %n\n . [unpartage] path = /home/partage

2003, Sbastien Namche (sebastien@nameche.fr) - 23

Authentification server
Lorsque cette mthode d'authentification est utilise, Samba authentifie les utilisateurs auprs d'un serveur NT. Il est recommand que les mots de passe soient crypts. Les utilisateurs et les groupes doivent exister dans la base des utilisateurs et groupes d'Unix. Exemple :
[global] security = server encrypt passwords = yes password server = ServeurNT [unpartage] path = /home/partage

2003, Sbastien Namche (sebastien@nameche.fr) - 24

Le programme smbpasswd
Le fichier des mots de passe crypts smbpasswd peut tre gr avec la commande... smbpasswd ! Exemples :
Ajouter un utilisateur (le mot de passe est demand)
puck:~# smbpasswd -a seb

Modifier le mot de passe d'un utilisateur


puck:~# smbpasswd seb

Dsactiver/activer un utilisateur
puck:~# smbpasswd -d seb puck:~# smbpasswd -e seb

Supprimer un utilisateur
puck:~# smbpasswd -x seb

Ajouter une machine au domaine (si Samba est PDC)


puck:~# smbpasswd -m "ys$"

Rappel : L'utilisateur doit, au pralable, tre connu du systme Unix !

2003, Sbastien Namche (sebastien@nameche.fr) - 25

Authentification domain
Cette configuration d'authentification ncessite au pralable que le serveur Samba soit enregistr comme membre du domaine auprs du PDC. Les mots de passe doivent tre crypts. Les utilisateurs et les groupes doivent exister dans la base des utilisateurs et groupes d'Unix. Exemple :
[global] security = domain encrypt passwords = yes password server = * [unpartage] path = /home/partage

2003, Sbastien Namche (sebastien@nameche.fr) - 26

Authentification domain
Afin que le serveur Samba soit membre du domaine, suivre ces tapes : 1) Configurer smb.conf ainsi
security = server workgroup = DOMAIN password server = PDCServer

2) Avec l'utilitaire Gestionnaire de server pour les domaines de Windows NT, ajouter le nom du serveur Samba comme membre du domaine. Puis utiliser la commande : smbpasswd -j DOMAIN 2alt) Utiliser la commande :
smbpasswd -j DOMAIN -U username%password

(o username est un compte du domaine ayant les droits ncessaires pour ajouter une machine au domaine).

3) Changer ces 2 options ainsi :

security = domain password server = *

2003, Sbastien Namche (sebastien@nameche.fr) - 27

Outils
Samba est install avec un ensemble d'outils : - testparm : permet de tester la validit du fichier smb.conf ; - smbstatus : liste l'ensemble des connexions et des fichiers ouverts ; - smbpasswd : pour manipuler le fichier des mots de passe crypts ; - make_smbcodepage : cration des pages de codes pour les clients ; - make_printerdef : permet l' auto-installation des imprimantes ; - smbcontrol : envoie de messages aux dmons Samba ; - smbclient : pour accder aux fichiers d'un partage distant ; - smbmount : pour monter un systme de fichier distant ; - smbtar : sauvegarde automatique de partages distants ; - nmblookup : rsoudre un nom NetBIOS.

2003, Sbastien Namche (sebastien@nameche.fr) - 28

testparm
L'utilitaire testparm permet de : 1) valider que le fichier smb.conf ne contient pas d'erreur ; 2) afficher les valeurs par dfaut de tous les directives de configuration. Exemple :
puck:~# testparm |more Load smb config files from /etc/samba/smb.conf Processing section "[homes]" Processing section "[printers]" Processing section "[archives]" Loaded services file OK. Press enter to see a dump of your service definitions # Global parameters [global] coding system = client code page = 850 code page directory = /usr/share/samba/codepages .../...

2003, Sbastien Namche (sebastien@nameche.fr) - 29

smbstatus
Cet utilitaire affiche l'ensemble des connexions au serveur Samba ainsi que la liste des fichiers sur lesquels un verrou est positionn. Exemple :
puck:~# smbstatus Samba version 2.2.3a-12.3 for Debian Service uid gid pid machine ------------------------------------seb seb seb 11923 ys No locked files

(192.168.200.51) Tue May 13 11:31:12 2003

2003, Sbastien Namche (sebastien@nameche.fr) - 30

smbclient
Le programme smbclient fournit un outil simple, en ligne de commande, qui permet d'accder un rpertoire partag sur un serveur Windows, Samba, etc. La syntaxe est trs proche de celle des clients FTP. Exemple :
ys:~$ smbclient //puck/seb -U seb -W ANET added interface ip=192.168.200.51 bcast=192.168.200.255 nmask=255.255.255.0 Password: Domain=[ANET] OS=[Unix] Server=[Samba 2.2.3a-12.3 for Debian] smb: \> cd OpenOffice.org1.0.1 smb: \OpenOffice.org1.0.1\> ls LICENSE 5908 Wed Jun 26 07:00:00 2002 README.html 16075 Wed Jun 26 07:00:00 2002 37870 blocks of size 262144. 14209 blocks available smb: \OpenOffice.org1.0.1\> get LICENSE getting file LICENSE of size 5908 as LICENSE (12.3 kb/s) (average 12.3 kb/s) smb: \OpenOffice.org1.0.1\> exit

2003, Sbastien Namche (sebastien@nameche.fr) - 31

smbclient
Les options de smbclient les plus souvent utilises sont :
-D directory -U username%password -W workgroup -M machine -N -I address -L -T<c|x>IXFqgbNan file

spcifie le rpertoire par dfaut lors de la connexion pour envoyer un message popup ne pas demander de mot de passe si la rsolution du nom NetBIOS n'est pas possible pour afficher la liste des partages permet de faire une archive d'un paratage

2003, Sbastien Namche (sebastien@nameche.fr) - 32

smbclient, exemples
ys:~$ smbclient -L //puck -N added interface ip=192.168.200.51 bcast=192.168.200.255 nmask=255.255.255.0 Anonymous login successful Domain=[ANET] OS=[Unix] Server=[Samba 2.2.3a-12.3 for Debian] Sharename --------archives groupes IPC$ ADMIN$ lp Server --------PUCK Workgroup --------ANET Type ---Disk Disk IPC Disk Printer Comment -------

IPC Service (puck server (Samba ... IPC Service (puck server (Samba ... Generic dot-matrix printer entry

Comment ------puck server (Samba 2.2.3a-12.3 for Debian) Master ------PUCK

2003, Sbastien Namche (sebastien@nameche.fr) - 33

smbclient, exemples
Sauvegarde du rpertoire user qui est sur le partage \\puck\seb vers le fichier user.tar :
ys:~$ smbclient //puck/seb -U seb%VerySecret -D user -Tc user.tar

Envoi d'un message popup :


ys:~$ nmblookup yvain querying yvain on 192.168.201.255 192.168.201.243 yvain<00> ys:~$ smbclient -M yvain added interface ip=192.168.201.51 bcast=192.168.201.255 nmask=255.255.255.0 added interface ip=127.0.0.1 bcast=127.255.255.255 nmask=255.0.0.0 Got a positive name query response from 127.0.0.1 ( 192.168.201.243 ) Connected. Type your message, ending it with a Control-D Test... (Dsol) -- Seb ^Dsent 26 bytes

2003, Sbastien Namche (sebastien@nameche.fr) - 34

smbtar
smbtar est un script shell qui utilise l'option -T de smbclient afin de mettre en oeuvre des sauvegardes automatiques de partages distants.

Exemples :
Mise sur bande (par exemple, un lecteur DAT) du rpertoire Data situ sur le partage seb de la machine puck, la connexion est ralise avec le login seb et le mot de passe SuperSecret :
ys:~$ smbtar -s puck -u seb -p SuperSecret -x seb -d Data -t /dev/st0

Cration d'une archive compresse nomme backup.tar.gz du partage backup de la machine puck, le mot de passe est backupPwd :
ys:~$ smbtar -s puck -p backupPwd -t - | gzip > backup.tar.gz

2003, Sbastien Namche (sebastien@nameche.fr) - 35

nmblookup
nmblookup est un outil qui permet de tester la rsolution des noms NetBIOS en ligne de commande. Exemple :
puck:~# nmblookup puck querying puck on 192.168.200.255 192.168.200.1 puck<00> puck:~# nmblookup -S puck querying puck on 192.168.200.255 192.168.200.1 puck<00> Looking up status of 192.168.200.1 PUCK <00> PUCK <03> PUCK <20> ..__MSBROWSE__. <01> - <GROUP> ANET <00> - <GROUP> ANET <1b> ANET <1d> ANET <1e> - <GROUP>

M M M M M M M M

<ACTIVE> <ACTIVE> <ACTIVE> <ACTIVE> <ACTIVE> <ACTIVE> <ACTIVE> <ACTIVE>

2003, Sbastien Namche (sebastien@nameche.fr) - 36

Winbind
La problmatique qui se prsente rgulirement est la suivante : un serveur Samba est configur pour authentifier auprs d'un serveur NT ou 2000 (avec la directive security). Mais cela ne concerne que la vrification des mots de passe prsents par les clients. Par consquent, les utilisateurs et groupes doivent tre connus du serveur Unix. Ce qui conduit la redondance des listes des utilisateurs (dans la base des utilisateurs du serveur NT ou 2000 et dans les fichiers /etc/passwd et /etc/group du Linux). Winbind propose une solution intressante ce problme. Il s'appuit sur les mcanismes traditionnels PAM et nsswitch de Linux.

2003, Sbastien Namche (sebastien@nameche.fr) - 37

PAM
Les PAM (Pluggable Authentication Modules) permettent un systme Linux (ou Solaris) d'authentifier les utilisateurs du systme partir de bases de donnes d'utilisateurs distantes. Par exemple : NIS (anciennement Yellow Pages ), LDAP, etc. Pour cela chaque service du serveur Linux dispose d'un fichier dans le rpetoire /etc/pam.d qui lui permet d'obtenir les paramtres d'authentification. Par exemple :
seb@puck:~$ cat /etc/pam.d/pop #%PAM-1.0 auth required pam_unix_auth.so account required pam_unix_acct.so password required pam_unix_passwd.so session required pam_unix_session.so

2003, Sbastien Namche (sebastien@nameche.fr) - 38

nsswitch
nsswicth a le mme rle que PAM en ce qui concerne les informations des utilisateurs (login, UID, GID, gecos, rpertoire personnel, shell) et des groupes du systme (nom, GID, membres). La fichier de configuration de nsswitch est /etc/nsswitch.conf. Un extrait de ce fichier est :
passwd: shadow: group: files nisplus files nisplus files nisplus

2003, Sbastien Namche (sebastien@nameche.fr) - 39

Principe de Winbind
Les utilisateurs et groupes crs dans Windows NT ou 2000 ont un attribut nomm RID. Le rle principal de Winbind est d'effectuer une correspondance entre le RID de ces enregistrements et les UID et GID d'Unix. Ces correpondances sont arbitraires et sont conserves en cache sur le serveur Linux. Le dmon winbindd est charg des communications RPC entre le module PAM Winbind et le contrleur de domaine.

2003, Sbastien Namche (sebastien@nameche.fr) - 40

Configuration de Winbind
Dans le fichier /etc/nsswitch.conf :
passwd: shadow: group: files winbind files winbind files winbind

Dans la section [global] du fichier smb.conf :


winbind gid = 10000-20000 winbind uid = 10000-20000

Enfin, s'assurer que le service winbindd est bien activ au dmarrage de la machine (par exemple avec ntsysv).

2003, Sbastien Namche (sebastien@nameche.fr) - 41

You might also like