Samba
| Fiche express | |
|---|---|
| Domaine | Partage de fichiers/imprimantes (SMB/CIFS) |
| Paquets | samba · samba-client · samba-common
|
| Config | /etc/samba/smb.conf
|
| Voir aussi | Options samba · Rhcsa samba · Samba rhel7 · Selinux samba · Sendmail |
Samba est une suite logicielle libre sous licence GPL qui implémente le protocole SMB/CIFS, utilisé par Windows pour le partage de fichiers et d'imprimantes. Elle permet aux systèmes Unix/Linux d'accéder aux ressources partagées par des machines Windows, et inversement de partager leurs propres ressources vers des clients Windows — sans que les utilisateurs des deux mondes n'aient à changer d'habitudes.
Le nom vient du protocole SMB (Server Message Block, d'origine IBM puis repris par Microsoft) auquel deux voyelles ont été ajoutées pour former « SaMBa ». Développé à l'origine par Andrew Tridgell à partir de 1991, le projet reçoit aujourd'hui les contributions d'une vingtaine de développeurs. Samba n'est pas compatible IPv6 sur les implémentations anciennes (à vérifier selon la version) et reste, à fonctionnalités égales, moins performant que NFS en transfert pur entre systèmes Unix.
Installation
apt-get install samba samba-client smbfs # Debian/Ubuntu
yum install samba samba-client # RHEL/CentOS
Configuration minimale
vi /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
netbios name = monserveur
hosts allow = 192.168.0.0/24
Tester et gérer le service
testparm # valide la syntaxe de smb.conf avant de (re)démarrer
systemctl restart smb # RHEL/CentOS 7+ (démon smbd)
systemctl restart nmb # démon nmbd (résolution NetBIOS)
service smbd restart # Debian/Ubuntu (init classique)
smbstatus # affiche les partages actifs et les connexions en cours
Monter un partage Windows (client)
Préférer l'adresse IP au nom NetBIOS, et éviter les majuscules dans les noms de partage :
mount -t cifs -o username=utilisateur,password=motdepasse //192.168.0.10/partage /mnt/partage
Montage persistant via /etc/fstab — préférer un fichier credentials séparé
(chmod 600) à un mot de passe en clair dans fstab :
//192.168.0.10/partage /mnt/partage cifs credentials=/etc/samba/creds-partage,uid=utilisateur 0 0
Correspondance utilisateurs Linux ↔ Samba
Chaque utilisateur Samba doit correspondre à un compte Linux existant. Le mot de passe
Samba est distinct du mot de passe système et stocké séparément
(/etc/samba/smbpasswd ou base tdbsam selon passdb
backend) :
smbpasswd -a utilisateur # ajoute/active un utilisateur Samba (compte Linux déjà existant)
Clients Samba
smbclient //machine/partage -U login # connexion interactive à un partage
smbclient -L hostname -U login # liste les partages exposés par un serveur
smbclient -L hostname # idem, en accès anonyme si autorisé
Montage rapide en ligne de commande (obsolète sur les distributions récentes au profit de
mount -t cifs) :
smbmount //machine/partage /mnt/mountpoint -o username=login
Intégration à un domaine Active Directory
L'intégration d'un serveur Samba à un domaine AD nécessite un client Kerberos, Active Directory reposant sur DNS, LDAP, Kerberos, NTP et SMB/CIFS.
Client Kerberos
apt-get install krb5-user # ou krb5-workstation sur RHEL/CentOS
ntpdate ntp.example.com # synchroniser l'heure avant tout (Kerberos est sensible au décalage horaire)
# /etc/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM
[realms]
EXAMPLE.COM = {
kdc = ad.example.com
admin_server = ad.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
⚠️ La casse doit être scrupuleusement respectée : le nom de royaume Kerberos (majuscules,
EXAMPLE.COM) et le nom de domaine DNS (minuscules, example.com)
ne sont volontairement pas les mêmes chaînes.
kinit administrateur@EXAMPLE.COM # obtenir un ticket
klist # vérifier le ticket en cours
kdestroy # le détruire
Configuration Samba pour l'ADS
[global]
realm = EXAMPLE.COM
workgroup = EXAMPLE
security = ADS
encrypt passwords = true
invalid users = root
Rejoindre le domaine
net ads join -U administrateur # rejoint le domaine AD (pour quitter : net ads leave)
net ads info # infos sur le domaine joint
kinit administrateur@EXAMPLE.COM
smbclient -L //ad -k # vérifie l'accès Kerberos aux partages du contrôleur AD
Authentification unifiée avec Winbind
Winbind, combiné à PAM et NSS, permet de faire apparaître les comptes d'un domaine Windows comme des comptes UNIX classiques.
apt-get install winbind
# ajout dans /etc/samba/smb.conf, section [global]
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind separator = +
winbind use default domain = yes
template shell = /bin/bash
template homedir = /home/%D/%U
wbinfo -u # liste les comptes utilisateurs vus via Winbind
wbinfo -g # liste les groupes
Intégration à NSS (/etc/nsswitch.conf) puis vérification :
passwd: compat winbind
group: compat winbind
getent passwd # doit mélanger comptes locaux et comptes AD
getent group
Intégration à PAM (exemple Debian, /etc/pam.d/common-auth) :
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure
⚠️ Adapter précisément à la distribution et à la configuration PAM existante — une erreur dans ces fichiers peut bloquer toute authentification locale, y compris pour root.
Voir aussi
- Options samba — glossaire des directives de
smb.conf - Rhcsa samba — configuration détaillée d'un partage (sécurité, impression, homes)
- Samba rhel7 — mise en œuvre RHEL7 (systemd, firewalld, montage multiuser)
- Selinux samba — contextes, ports et booléens SELinux propres à Samba
- Sendmail — autre service historique de la même famille RHCSA