Configurer un serveur de fichiers Samba sur Debian

Note

Cette documentation se base sur la distribution Debian Stretch.

La version du paquet Samba4 de la distribution Debian Stretch est suffisamment à jour pour fournir un service de fichiers optimal. Il n’est donc pas nécessaire de re-compiler Samba à partir des sources.

Note

Dans cette documentation, on suppose :

  • que vous aurez installé la base système de votre serveur de fichiers en ayant suivi la documentation d’installation de base de Debian Stretch et que votre serveur s’appelle srvfiles ;
  • que l’adresse IP de votre contrôleur de domaine est 192.168.1.11 ;
  • que le domaine s’appelle mydomain.lan ;

Préparation de la VM

Préparer la configuration réseau de la machine en suivant la même documentation que celle pour un nouveau contrôleur de domaine Préparer votre machine Debian9. On pensera bien à configure comme serveur DNS le serveur Active Directory dans le fichier /etc/resolv.conf

Installation des dépendances

Installer les dépendances

apt-get update
export DEBIAN_FRONTEND=noninteractive
apt-get install samba winbind krb5-user libnss-winbind
unset DEBIAN_FRONTEND

Jonction au domaine

Configuration krb5.conf, éditer le fichier /etc/krb5.conf et replacer tout le fichier par les lignes ci-dessous.

[libdefaults]
  dns_lookup_realm = false
  dns_lookup_kdc = true
  default_realm = MYDOMAIN.LAN

Vérifier que la configuration DNS de dans /etc/nsswitch.conf n’a pas été modifié par l’installation d’un paquet quelconque. Si la ligne host ressemble à la ligne ci-dessous, la modifier pour qu’elle ressemble à la ligne juste après

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns    # MAUVAIS!!!
hosts: files dns                                         # BON

Vérification que le kerberos est bien configuré (administrator est le compte par défaut créé par samba4, si l’on veut utiliser le compte administrateur, n’oubliez pas de le changer)

kinit administrator
klist

Configuration smb.conf

Suivant le type de mapping utilisé (rfc2307 ou RID) le fichier de configuration ne sera pas le même.

Créer le fichier de configuration samba /etc/samba/smb.conf. Remplacer le nom MYDOMAIN.LAN par votre royaume kerberos

Schéma rfc2307

Vous utiliserez habituellement cette configuration si vous avez migré depuis un domaine Samba3-PDC-NT4 vers un Samba4-AD.

[global]
   workgroup = MYDOMAIN
   security = ADS
   realm = MYDOMAIN.LAN
   idmap config *:backend = tdb
   idmap config *:range = 70001-80000
   idmap config MYDOMAIN:backend = ad
   idmap config MYDOMAIN:schema_mode = rfc2307
   idmap config MYDOMAIN:range = 500-70000
   winbind nss info = rfc2307
   vfs objects = acl_xattr
   map acl inherit = Yes
   store dos attributes = Yes
   winbind use default domain = yes
   winbind enum users = yes
   winbind enum groups = yes
   template homedir = /home/homes/%U

[partages]
   path = /home/partages
   read only = no

[homes]
  path = /home/homes/%U
  read only = no

[profiles]
  path = /home/profiles
 read only = no

Fonctionnement basé sur les RID

Vous utiliserez habituellement cette configuration si vous avez migré depuis un Active Directory Microsoft ou si vous avez créé un nouveau domaine Samba-AD.

Dans la configuration ci-dessous, il faut modifier le workgroup, le realm, ainsi que le nom de domaine dans les lignes idmap config. Le workgroup et le realm doivent être saisis en majuscule!

[global]
   workgroup = MYDOMAIN
   security = ADS
   realm = MYDOMAIN.LAN
   winbind separator = +
   idmap config *:backend = tdb
   idmap config *:range = 700001-800000
   idmap config MYDOMAIN:backend  = rid
   idmap config MYDOMAIN:range  = 10000-700000
   winbind enum users = yes
   winbind enum groups = yes
   vfs objects = acl_xattr
   map acl inherit = Yes
   store dos attributes = Yes
   winbind trusted domains only = no
   winbind use default domain = yes
   template homedir = /home/homes/%U
[partages]
   path = /home/partages
   read only = no

[homes]
  path = /home/homes/%U
  read only = no

[profiles]
  path = /home/profiles
  read only = no

Jonction de la machine au domaine

net ads join -U administrator

Configurer le fichier /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat winbind
group:          compat winbind
shadow:         compat winbind

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Démarrer les services

systemctl restart winbind
systemctl restart smbd

Il est conseillé de faire un reboot afin de vider les caches du nsswitch.

Vérification de la jonction Ces 2 commandes doivent retourner les utilisateurs et les groupes de l’AD telle que reçu par winbind:

wbinfo -u
wbinfo -g
wbinfo -i administrator

Ces 2 commandes doivent retourner les utilisateurs et les groupes avec leur uidNumber tels qu’interprété par le système Linux. Bien vérifier que l’on voit les utilisateurs de l’AD: administrator, krbtgt, etc.

getent passwd administrator
getent group "domain admins"

Mise en place des partages

Création du partage

mkdir /home/partages
chown administrator:"domain admins" /home/partages