La version 3 de Samba, a incorporé de nombreuses améliorations par rapport aux versions précédentes, y compris :
La possibilité de faire partie d'un domaine Active Directory au moyen de LDAP et Kerberos
La prise en charge intégrée de Unicode pour l'internationalisation
La prise en charge de connexions client Microsoft™ Windows™ XP Professional aux serveurs Samba sans devoir toucher à la base de registre local
Samba a largement participé à l'intégration de systèmes Unix dans des environnements Microsoft™, en proposant en particulier les fonctionnalités suivantes :
Mettre des arborescences de répertoires et des imprimantes à la disposition de clients Linux, UNIX et Windows™
Aider lors de la navigation du réseau (avec ou sans NetBIOS)
Authentifier les connexions de domaines Windows™
Fournir la résolution du serveur de noms Windows Internet Name Service (WINS)
Agir en tant que contrôleur principal de domaine (ou PDC, de l'anglais Primary Domain Controller) de type Windows™ NT
Agir en tant que Contrôleur de Domaine Secondaire (ou BDC, de l'anglais Backup Domain Controller) pour un contrôleur principal (PDC) bas~ sur Samba
Agir comme un serveur membre du domaine Active Directory
Joindre un PDC Windows™ NT/2000/2003
Cependant, et en attendant sa version 4 qui a nécessité plus de 4 ans de développement, Samba est pour le moment limiter, en particulier pour ces tâches :
Agir comme un BDC pour un PDC Windows™ (et vice versa)
Agir comme le contrôleur d'un domaine Active Directory
L'installation de Samba via les logiciels portés de Samba propose un certain nombre d'options de compilation, permettant d'ajouter/enlever des fonctionnalités en fonction de chaque environnement et besoin. Ces options peuvent varier suivant les versions de Samba :
[X] LDAP With LDAP support
[X] ADS With Active Directory support
[X] CUPS With CUPS printing support
[X] WINBIND With WinBIND support
[X] ACL_SUPPORT With ACL support
[X] SYSLOG With Syslog support
[X] QUOTAS With Quota support
[X] UTMP With UTMP support
[ ] MSDFS With MSDFS support
[ ] SAM_XML With XML smbpasswd backend
[ ] SAM_MYSQL With MYSQL smbpasswd backend
[ ] SAM_PGSQL With PostgreSQL smbpasswd backend
[ ] SAM_OLD_LDAP With Samba2.x LDAP smbpasswd backend
[X ] PAM_SMBPASS With SMB PAM module
[X] POPT With installed POPT library
Le script /usr/local/etc/rc.d/samba et le fichier /usr/local/etc/smb.conf.sample sont créés lors de la compilation. Le script permet de contrôler les démons Samba, et le fichier propose une configuration de Samba, à modifier bien sûr . Il est à noter que sous FreeBSD, il est nécessaire d'autoriser spécifiquement le démarrage de Samba dans le fichier rc.conf pour utiliser ces scripts.
arrakis# /usr/local/etc/rc.d/samba stop Stopping smbd. Stopping nmbd. arrakis# /usr/local/etc/rc.d/samba start Removing stale Samba tdb files: ........ done Starting nmbd. Starting smbd. arrakis# /usr/local/etc/rc.d/samba restart Performing sanity check on Samba configuration: OK Stopping smbd. Stopping nmbd. Removing stale Samba tdb files: ...... done Starting nmbd. Starting smbd.
# This is the main Samba configuration file. You should read the # smb.conf(5) manual page in order to understand the options listed # here. Samba has a huge number of configurable options (perhaps too # many!) most of which are not shown in this example # # For a step to step guide on installing, configuring and using samba, # read the Samba-HOWTO-Collection. This may be obtained from: # http://www.samba.org/samba/docs/Samba-HOWTO-Collection.pdf # # Many working examples of smb.conf files can be found in the # Samba-Guide which is generated daily and can be downloaded from: # http://www.samba.org/samba/docs/Samba-Guide.pdf # # Any line which starts with a ; (semi-colon) or a # (hash) # is a comment and is ignored. In this example we will use a # # for commentry and a ; for parts of the config file that you # may wish to enable # # NOTE: Whenever you modify this file you should run the command "testparm" # to check that you have not made any basic syntactic errors. # #======================= Global Settings ===================================== [global] # workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH workgroup = MYGROUP # server string is the equivalent of the NT Description field server string = Samba Server # Security mode. Defines in which mode Samba will operate. Possible # values are share, user, server, domain and ads. Most people will want # user level security. See the Samba-HOWTO-Collection for details. security = user ....
Enfin, quelques utilisatires sont fournis avec samba, dont une partie est décrite dans les paragraphes suivants.
Samba est composé de trois démons (smbd, nmbd et winbindd). Deux services (smb et windbind) contrôlent la manière selon laquelle les démons sont démarrés et arrêtés et ainsi que d'autres fonctionnalités en relation avec les services.
smbd: Le démonsmbdfournit des services de partage de fichiers et d'impression aux clients Windows™. En outre, il est responsable de l'authentification des utilisateurs, du verrouillage des ressources et du partage des données par le biais du protocole SMB. Les ports par défaut sur lesquels le serveur est à l'écoute de tout trafic SMB sont les ports TCP 139 et 445. Le démon smbd est contrôlé par le servicesmbnmbd: Le démon serveurnmbdcomprend et répond à toutes les requêtes de service de nom NetBIOS telles que celles produites par SMB/CIFS dans des systèmes basés sur Windows™. Parmi ces derniers figurent les clients Windows™ 95/98/ME, Windows™ NT, Windows™ 2000, Windows™ XP et LanManager. Ce démon joue également un rôle au niveau des protocoles de navigation qui constituent l'affichage du voisinnage réseau (Network Neighborhood) de Windows™. Le port par défaut sur lequel le serveur attend du trafic NMB est le port UDP 137. Le démonnmbdest contrôlé par le servicesmb.Winbind: Le servicewinbindeffectue la résolution entre les informations relatives aux utilisateurs et aux groupes sur un serveur Windows NT et les rend utilisables par des plates-formes UNIX. Cette opération est possible grâce à l'utilisation d'appels RPC de Microsoft™, du système PAM (Pluggable AuthenticationModule, ou module d'authentification enfichable) et du NSS (Name Service Switch). Ceci permet aux utilisateurs de domaines Windows™ NT d'apparaître comme des utilisateurs UNIX sur une machine UNIX. Bien qu'intégré à la distribution Samba, le servicewinbindest contrôlé séparément du servicesmb. Le démonwinbinddest contrôlé par le servicewinbindet il n'est pas nécessaire que le servicesmbsoit lancé pour que le démon tourne.
Le programme findsmb subnet_broadcast_address est un script Perl qui permet de recueillir des informations sur les systèmes compatibles avec SMB sur un sous-réseau particulier. Si aucun sous-réseau n'est spécifié, le sous-réseau local est utilisé. Parmi les éléments spécifiés figurent l'adresse IP, le nom, groupe de travail ou nom de domaine NetBIOS, le système d'exploitation et la version.
L'exemple suivant montre la sortie de la commande findsmb exécutée en tant qu'un utilisateur valide du système :
ikare@ix:~$ findsmb
*=DMB
+=LMB
IP ADDR NETBIOS NAME WORKGROUP/OS/VERSION
---------------------------------------------------------------------
172.17.4.1 POSTE401 [ BAGGINS ]
172.17.7.2 SRV2 *[ASR] [Windows Server 2003 R2 3790 Service Pack 1] [Windows Server 2003 R2 5.2]
172.17.7.3 SRV3 [ASR] [Windows Server 2003 3790 Service Pack 1] [Windows Server 2003 5.2]
172.17.7.5 SRV5 *[CONCEPT] [Windows Server 2003 R2 3790 Service Pack 1] [Windows Server 2003 R2 5.2]
172.17.7.9 POSTE703 +[HERMES] [Windows 5.1] [Windows 2000 LAN Manager]
172.17.3.10 POSTE310 [BAGGINS] [Windows 5.0] [Windows 2000 LAN Manager]
172.17.3.14 POSTE314 [BAGGINS] [Windows 5.0] [Windows 2000 LAN Manager]
172.17.7.20 POSTE704 [HERMES] [Windows 5.1] [Windows 2000 LAN Manager]
172.17.6.20 POSTE816 [ BAGGINS ]
Le programme nmblookup options netbios_name effectue la résolution des noms NetBIOS en adresse IP. Le programme diffuse sa demande sur le sous-réseau local jusqu'à ce que la machine cible réponde.
ikare@ix:~$ nmblookup SRV2 querying SRV2 on 172.17.255.255 172.17.7.2 SRV2<00> 192.168.31.1 SRV2<00> 192.168.219.1 SRV2<00>
Le programme pdbedit gère les comptes présents dans la base de données de SAM. Tous les backends sont pris en charge, y compris smbpasswd, LDAP, NIS+ et la bibliothèque de base de données tdb.
pdbedit -v -L ikare Unix username: ikare NT username: Account Flags: [U ] User SID: S-1-5-21-761572816-94600713-4071525793-5646 Primary Group SID: S-1-5-21-761572816-94600713-4071525793-513 Full Name: Home Directory: \\ix\ikare HomeDir Drive: Logon Script: Profile Path: \\ix\ikare\profile Domain: IX Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: mar, 19 jan 2038 07:14:07 RET Kickoff time: mar, 19 jan 2038 07:14:07 RET Password last set: 0 Password can change: 0 Password must change: mar, 19 jan 2038 07:14:07 RET Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Le programme smbtree permet d'otenir l'équivalent du voisinage réseau sous Windows™, en mode texte. Il affiche l'ensemble des ressources SMB, en donnant les noms et les partages de chaque poste. Un extrait de smbtree sur le réseau de N3 :
WORKGROUP
\\POSTE704
\\KONIFEXXX_PC
TOTO
\\REDREUNION
\\REDREUNION\jeux
\\REDREUNION\Lettre et CV
\\REDREUNION\Mes vid~~os
\\REDREUNION\IPC$ IPC distant
SA-AUTREMENT
\\PC-NELLO
\\PC-NELLO\C$ Partage par défaut
\\PC-NELLO\ADMIN$ Administration à~ distance
\\PC-NELLO\E
\\PC-NELLO\Counter-Strike Source
\\PC-NELLO\Téléchargements
\\PC-NELLO\x86_policy.X
\\PC-NELLO\Documents
\\PC-NELLO\print$ Pilotes d'imprimantes
\\PC-NELLO\D$ Partage par défaut
\\PC-NELLO\IPC$ IPC distant
Le programme smbcacls //server/share filename options modifie les ACL de Windows™ dans les fichiers et répertoires partagés par le serveur Samba.
Le programme smbclient //server/share password options est un client UNIX souple qui fournit des fonctionnalités semblables à ftp.
Le programme smbcontrol options destination messagetype parameters envoie des messages de contrôle aux démons smbd ou nmbd en cours d'exécution. L'exécution de smbcontrol -i lance la commande de manière interactive jusqu'à ce qu'une ligne blanche ou que la lettre 'q' soit saisie.
Le programme smbgroupedit options établit la correspondance entre les groupes Linux et les groupes Windows. Il permet également à un groupe Linux d'être un groupe de domaine.
Le programme smbmount //server/share mount_point -o options utilise le programme de bas niveau smbmnt pour monter un système de fichiers smbfs (partage Samba). La commande mount -t smbfs est également valide.
Le programme smbpasswd options username password gère les mots de passe cryptés. Ce programme peut être exécuté aussi bien par un super-utilisateur pour changer le mot de passe d'un utilisateur quelconque que par un utilisateur ordinaire pour changer son propre mot de passe Samba.
Le programme smbstatus options affiche le statut des connexions actuelles à un serveur Samba.
Le programme testparm options filename hostname IP_address vérifie la syntaxe du fichier smb.conf. Si votre fichier smb.conf se trouve dans l'emplacement par défaut (/etc/samba/smb.conf pour Linux, /usr/local/etc/samba/smb.conf), il n'est pas nécessaire de préciser l'emplacement. La spécification du nom d'hôte et de l'adresse IP pour le programme testparm permet de vérifier que les fichiers hosts.allow et host.deny sont bien configurés correctement. Le programme testparm affiche également un résumé de vos fichiers smb.conf et le rôe du serveur (autonome, domaine, etc.) après avoir effectué les tests. Ce programme est utile lors du débogage étant donné qu'il exclut les commentaires et fournit les informations de manière concise pour des administrateurs expérimentés.
testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = MSHOME
server string = %h server (Samba, Ubuntu)
obey pam restrictions = Yes
passdb backend = tdbsam
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* .
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
invalid users = root
[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers