Configurer un serveur de fichiers Samba sur RedHat8 et dérivées

Attention

Cette documentation se base sur la distribution Redhat8.

La version du paquet Samba de la distribution Redhat8 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 et que votre serveur s’appelle srvfiles.

  • Que l’adresse IP de votre contrôleur de domaine est 192.168.1.11.

  • Que votre domaine s’appelle mydomain.lan.

  • Modifier le fichier /etc/hosts pour qu’il contienne la résolution DNS du FQDN de la machine sur son IP (ie pas 127.0.0.1), avec le nom long puis le nom court.

  • Modifier le fichier /etc/resolv.conf pour pointer vers le DNS de l’AD, modifier le fichier network-scripts également :

    search mydomain.lan
    domain mydomain.lan
    nameserver 192.168.1.11
    

Indication

Ajouter mydomain.lan dans le fichier /etc/resolv.conf est nécessaire car dans le fichier smb.conf, l’option winbind use default domain = yes repose sur lui. Si cela n’est pas fait, cela provoque les problèmes suivants :

  • Problème lors de la commande net ads testjoin qui dit ne pas trouver le contrôleur de domaine.

  • La commande chown userad1 myfile ne fonctionne pas.

  • Un wbinfo -u / -g / -i ne renvoie pas de résultat.

  • Rebooter la machine pour prendre en compte ce nouveau nom de machine :

    reboot
    
  • Installer les dépendances ;

    yum install samba samba-winbind samba-winbind-clients krb5-workstation
    

Joindre le serveur de fichiers au domaine

  • Editer 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 dans /etc/nsswitch.conf n’a pas été modifiée 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    #BAD!!!
    hosts: files dns myhostname                              #GOOD
    
  • Vérifier que le kerberos est bien configuré :

    kinit administrator
    klist
    

Configuration du smb.conf

Selon le type de schéma utilisé (RFC2307 / AD), le fichier ne sera pas similaire !

  • Créer le fichier de configuration samba /etc/samba/smb.conf.

  • Remplacez le nom MYDOMAIN.LAN par votre royaume kerberos.

Type de RID

Vous utiliserez généralement la configuration RID si vous avez migré depuis un MS-AD ou si vous avez créé un nouveau domaine Samba-AD. Vous utiliserez généralement la configuration RFC2307 si vous avez migré de Samba3-NT4 à Samba-AD. Pour plus d’informations, voir les explications sur l’IDMapping.

Confifuration de file:/etc/samba/smb.conf ;

Mode RID

Mode RFC2307

[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 use default domain = yes
  winbind enum users = yes
  winbind enum groups = yes
  vfs objects = acl_xattr
  map acl inherit = Yes
  template homedir = /home/homes/%U

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

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

[profiles]
  path = /home/profiles
  read only = no
[global]
  workgroup = MYDOMAIN
  security = ADS
  realm = MYDOMAIN.LAN
  idmap config *:backend = tdb
  idmap config *:range = 700001-800000
  idmap config MYDOMAIN:backend = ad
  idmap config MYDOMAIN:schema_mode = rfc2307
  idmap config MYDOMAIN:range = 500-700000
  winbind nss info = rfc2307
  vfs objects = acl_xattr
  map acl inherit = Yes
  winbind use default domain = yes
  winbind enum users = yes
  winbind enum groups = yes
  template homedir = /home/homes/%U

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

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

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

Note

Si vous ne voulez pas utiliser votre serveur de fichiers comme service d’impression, ajoutez les options suivantes dans la section global du fichier /etc/samba/smb.conf.

printcap name = /dev/null
load printers = no
disable spoolss = yes
printing = bsd

Joindre le serveur de fichiers au domaine

net ads join -U administrator
  • Configurer le fichier /etc/nsswitch.conf, modifier les lignes suivantes :

    passwd:         files sssd winbind
    group:          files sssd winbind
    shadow:         files sssd winbind
    
  • Redémarrer les services :

    systemctl enable winbind smb
    systemctl restart winbind
    systemctl restart smb
    
  • Redémarrer la machine afin de vider les caches du nsswitch :

    reboot
    
  • Vérifier la bonne jonction au domaine ;

    • Les 3 commandes suivantes doivent retourner les utilisateurs, les groupes et l’information d’un compte de l’AD telle que reçue par winbindd :

      wbinfo -u
      wbinfo -g
      wbinfo -i administrator
      
    • Les 2 commandes suivantes doivent retourner les utilisateurs et les groupes avec leur uidNumber tels qu’interprétés 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"
      

Créer des partages

mkdir /home/shares
chown administrator:"domain users" /home/shares
chmod 770 /home/shares