Samba ou comment remplacer les serveurs NT
Plan Introduction
Introduction Qu’est ce que Samba Programmes permettant à une machine unix de fournir des services à des postes Wintel GPL Partage de fichiers et d’imprimantes Implémente SMB (CIFS) au-dessus de NetBIOS sur TCP/IP Joue le rôle de serveur WINs et PDC (contrôleur de domaine)
Introduction Samba vs NFS Protocole avec état ( NFS ) = moins robuste beaucoup plus d’instructions = plus de complexité = plus de rapide Plus de fonctionnalité SMB= NFS+lpd+Login/Password
Introduction Philosophie Samba = Windows Networking "the unix way" Totale maîtrise des options du protocole Options et fichiers de config. très complexes Pas besoin de maîtriser tout d'un coup Il vaut mieux connaître le principe de fonctionnement
Architecture
NetBIOS Service de nommage Service session Service datagramme espace plat 15 caractères + type master browser WINS Service session Service datagramme
Workgroup vs Domain Mode workgroup: peer to peer Domain chaque machine a une base de comptes elle fait elle même la validation Domain validation par une base centrale PDC il y a toujours la notion peer to peer
Workgroup
Domain
Acteurs
Acteurs
Samba nmbd service de nommage + 'browser' smbd service de partage de fichiers smbpasswd ajout d'utilisateur addtosmbpass import de /etc/passwd nmblookup cherche des noms NetBIOS smbprint imprimer sur des imprimantes Wintel smbclient client ligne de command SMB smbtar tar. un volume win. directement
Configuration Smb.conf Tout est configurable il y avait 165 paramètres dans la v 1.9.17 en version 2.0 130 paramètres globaux 100 paramètres de partage un man de ~ 8500 lignes Tout est configurable
Smb.conf [global] [homes] [printers] [autres...] paramètres globaux valeurs par défaut pour les autres sections [homes] permet d'avoir un service homes automatique [printers] exporter les imprimante std (/etc/princap) [autres...] définir d'autres services de partage disque ou imprimante
Variables et macros Macros toujours disponibles %U = le username demandé par le client à l'ouverture de la session, passé par le client au serveur %G = groupe primaire de l'utilisateur %U %M = nom DNS de la machine cliente (en minuscules) %I = adresse IP de la machine cliente %m = nom NETBIOS de la machine cliente %h = nom de l'hôte sur lequel tourne Samba %L = le nom NETBIOS du serveur %a = architecture de la machine cliente; sont reconnus : Samba, WfWg, Win95, WinNT; Tout le reste est "UNKNOWN". %R = le niveau de protocole négocié : CORE, COREPLUS, LANMAN1, LANMAN2, NT1 %N = nom du serveur NIS %T = date et heure courante %d = PID du process serveur courant %v = version de Samba
Variables et macros Macros disponible uniquement dans un contexte de "partage" %u = username du service courant (si défini, par exemple avec force user = xxx) %g = nom du groupe primaire de l'utilisateur %u %H = le "home" directory de l'utilisateur %u %P = root directory du service courant %S = nom du service courant
[global] Include = /usr/local/samba/lib/smb.conf.%M netbios = barman workgroup = inat server string = commentaire local master = yes preferred master = no os level = 33 domain master = yes
[gobal] wins server = nom.serveur.dns wins support = yes interfaces = 192.134.4.1 192.134.0.0/24 name resolver order = lmhosts hosts wins bcast dead time = 15 log file = fichier.%m max log file = 2000 (2M)
Sécurité Share user server domain défaut pour V<= 1.19 existe pour V >= 2.00
Security=Share Modèle Win95 un password par partage authentification à chaque connexion méthode déconseillée avec samba
Security= Share
Security= user Samba authentifie une paire (username/passwd) une seul authentification lors de la première connexion problème des MAJUSCULES Le plus utilisé
Security= user
Security= server Même mode que user samba utilise une liste de serveurs pour vérifier (username/password) il est impératif d'avoir un UID-unix par utilisateur pour faire le contrôle d'accès username uid:gid home password=* shell=/bin/false
Security = domain Même principe que le mode user le serveur peut devenir membre du domaine NT
Sécurité: allow deny equiv Contrôle d'accès selon la machine cliente hosts allow = 192.134.4.47 \ 192.134.0 execpt 192.134.4.0.4 hosts deny = mechan.fr hosts equiv = /etc/hosts.equiv
Exemple Un partage projet accessible par malek et mas /etc/passwd malek:zzzzzz:zzzzz:/home/malek:/usr/bin/bash mas:zzz:zzzz:/home/mas:/usr/bin/bash /etc/group projet:x:400:malek,mas
exemple #============== Global Definitions =============== [global] workgroup = tunis server string = %h serveur Samba printcap name = /etc/printcap load printers = yes log file = /var/log/samba/log.%m max log size = 500 security = user socket options = TCP_NODELAY dns proxy = no
exemple #================= Share Definitions ================ [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba # Set public = yes to allow user 'guest account' to print guest ok = no writable = no printable = yes
exemple [projet] comment = répertoire commun pierre et jean ;le texte ci-dessus apparait dans l'explorateur path = /home/projet writable = yes valid users = @projet # les membres du group "projet" ont accès locking = yes ; modes par défaut à la création de fichiers: create mode = 0660 directory mode = 0770 force group = projet
Swat Interface graphique: web + cgi /etc/services /etc/inetd.conf swat 901/tcp /etc/inetd.conf swat stream tcp nowait.400 /usr/local/samba/bin/swat swa http://127.0.0.1:901/
Swat
Swat