Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Documentation de SUSE Enterprise Storage 7.1 / Guide d'opérations et d'administration / Accès aux données de la grappe / Exportation des données Ceph via Samba
S'applique à SUSE Enterprise Storage 7.1

24 Exportation des données Ceph via Samba

Ce chapitre décrit comment exporter des données stockées dans une grappe Ceph via un partage Samba/CIFS afin que vous puissiez facilement y accéder à partir des machines clientes Windows*. Il comprend également des informations qui vous aideront à configurer une passerelle Ceph Samba pour joindre Active Directory dans le domaine Windows* afin d'authentifier et d'autoriser les utilisateurs.

Note
Note : performances de la passerelle Samba

En raison du overhead accru du protocole et de la latence supplémentaire causée par des sauts de réseau additionnels entre le client et le stockage, l'accès à CephFS via la passerelle Samba peut réduire considérablement les performances de l'application par rapport aux clients Ceph natifs.

24.1 Exportation de CephFS via un partage Samba

Avertissement
Avertissement : accès interprotocole

Les clients CephFS et NFS natifs ne sont pas limités par les verrouillages de fichiers obtenus via Samba, et inversement. Les applications qui s'appuient sur le verrouillage de fichiers interprotocole peuvent présenter des altérations des données si les chemins de partage Samba soutenus par CephFS sont accessibles par d'autres moyens.

24.1.1 Configuration et exportation de paquetages Samba

Pour configurer et exporter un partage Samba, les paquetages suivants doivent être installés : samba-ceph et samba-winbind. Si ces paquetages ne sont pas installés, installez-les :

cephuser@smb > zypper install samba-ceph samba-winbind

24.1.2 Exemple de passerelle unique

Pour préparer l'exportation d'un partage Samba, choisissez un noeud approprié afin de faire office de passerelle Samba. Le noeud doit avoir accès au réseau client Ceph et disposer de ressources suffisantes en termes de processeur, de mémoire et de réseau.

La fonctionnalité de basculement peut être fournie par CTDB et l'extension SUSE Linux Enterprise High Availability Extension. Reportez-vous à la Section 24.1.3, « Configuration de la haute disponibilité » pour plus d'informations sur la configuration HA.

  1. Assurez-vous qu'un CephFS actif existe déjà dans votre grappe.

  2. Créez un trousseau de clés spécifique à la passerelle Samba sur le noeud Admin de Ceph et copiez-le sur les deux noeuds de la passerelle Samba :

    cephuser@adm > ceph auth get-or-create client.samba.gw mon 'allow r' \
     osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
    cephuser@adm > scp ceph.client.samba.gw.keyring SAMBA_NODE:/etc/ceph/

    Remplacez SAMBA_NODE par le nom du noeud de la passerelle Samba.

  3. Les étapes suivantes sont exécutées sur le noeud de la passerelle Samba. Installez Samba avec le paquetage d'intégration de Ceph :

    cephuser@smb > sudo zypper in samba samba-ceph
  4. Remplacez le contenu par défaut du fichier /etc/samba/smb.conf par ce qui suit :

    [global]
      netbios name = SAMBA-GW
      clustering = no
      idmap config * : backend = tdb2
      passdb backend = tdbsam
      # disable print server
      load printers = no
      smbd: backgroundqueue = no
    
    [SHARE_NAME]
      path = CEPHFS_MOUNT
      read only = no
      oplocks = no
      kernel share modes = no

    Le chemin CEPHFS_MOUNT ci-dessus doit être monté avant de démarrer Samba avec une configuration de partage CephFS du kernel. Reportez-vous à la Section 23.3, « Montage de CephFS dans /etc/fstab ».

    La configuration de partage ci-dessus utilise le client CephFS du kernel Linux, recommandé pour des raisons de performances. Comme alternative, le module vfs_ceph de Samba peut également être utilisé pour communiquer avec la grappe Ceph. Les instructions sont indiquées ci-dessous pour des installation existantes, mais ne sont pas recommandées pour les nouveaux déploiements de Samba :

    [SHARE_NAME]
      path = /
      vfs objects = ceph
      ceph: config_file = /etc/ceph/ceph.conf
      ceph: user_id = samba.gw
      read only = no
      oplocks = no
      kernel share modes = no
    Astuce
    Astuce : modes oplocks et share

    Les verrous optionnels (oplocks - également connus sous le terme de baux SMB2+) permettent d'améliorer les performances grâce à un caching client agressif, mais à l'heure actuelle, ils sont risqués lorsque Samba est déployé avec d'autres clients CephFS, tels que le kernel mount.ceph, FUSE ou NFS Ganesha.

    Si tous les accès au chemin du système de fichiers CephFS sont exclusivement gérés par Samba, le paramètre oplocks peut être activé en toute sécurité.

    Actuellement, pour que les fichiers soient desservis correctement, l'option kernel share modes doit être désactivée sur un partage en cours d'exécution avec le module CephFS vfs.

    Important
    Important : autorisation d'accès

    Samba assigne les utilisateurs et les groupes SMB à des comptes locaux. Les utilisateurs locaux peuvent se voir assigner un mot de passe pour l'accès au partage Samba via :

    # smbpasswd -a USERNAME

    Pour que les entrées/sorties se déroulent correctement, la liste de contrôle d'accès (ACL) du chemin du partage doit autoriser l'accès à l'utilisateur connecté via Samba. Vous pouvez modifier l'ACL en effectuant un montage temporaire via le client de kernel CephFS et en employant les utilitaires chmod, chown ou setfacl par rapport au chemin du partage. Par exemple, pour permettre l'accès à tous les utilisateurs, exécutez la commande suivante :

    # chmod 777 MOUNTED_SHARE_PATH

24.1.2.1 Démarrage des services Samba

Pour démarrer ou redémarrer les services Samba autonomes, utilisez les commandes suivantes :

# systemctl restart smb.service
# systemctl restart nmb.service
# systemctl restart winbind.service

Pour vous assurer que les services Samba se lancent au démarrage, activez-les via :

# systemctl enable smb.service
# systemctl enable nmb.service
# systemctl enable winbind.service
Astuce
Astuce : services nmb et winbind facultatifs

Si vous n'avez pas besoin de parcourir un partage réseau, il n'est pas nécessaire d'activer et de démarrer le service nmb.

Le service winbind est uniquement requis en cas de configuration en tant que membre du domaine Active Directory. Reportez-vous à la Section 24.2, « Jointure de la passerelle Samba et d'Active Directory ».

24.1.3 Configuration de la haute disponibilité

Important
Important : basculement transparent non pris en charge

Bien qu'un déploiement Samba + CTDB à plusieurs noeuds soit plus disponible que le noeud unique (voir Chapitre 24, Exportation des données Ceph via Samba), le basculement transparent côté client n'est pas pris en charge. Les applications connaîtront probablement une brève interruption de service en cas de défaillance d'un noeud de passerelle Samba.

Cette section fournit un exemple de configuration à haute disponibilité à deux noeuds des serveurs Samba. La configuration requiert l'extension SUSE Linux Enterprise High Availability Extension. Les deux noeuds sont appelés earth192.168.1.1 et mars (192.168.1.2).

Pour plus d'informations sur l'extension SUSE Linux Enterprise High Availability Extension, reportez-vous à la page https://documentation.suse.com/sle-ha/15-SP1/.

Par ailleurs, deux adresses IP virtuelles flottantes permettent aux clients de se connecter au service quel que soit le noeud physique sur lequel il s'exécute. L'adresse IP 192.168.1.10 est utilisée pour l'administration des grappes avec Hawk2 et 192.168.2.1 exclusivement pour les exportations CIFS. Cela facilite l'application des restrictions de sécurité ultérieurement.

La procédure suivante décrit l'exemple d'installation. Pour plus d'informations, reportez-vous à la page https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-install-quick/.

  1. Créez un trousseau de clés spécifique à la passerelle Samba sur le noeud Admin et copiez-le sur les deux noeuds :

    cephuser@adm > ceph auth get-or-create client.samba.gw mon 'allow r' \
        osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
    cephuser@adm > scp ceph.client.samba.gw.keyring earth:/etc/ceph/
    cephuser@adm > scp ceph.client.samba.gw.keyring mars:/etc/ceph/
  2. La configuration de SLE-HA nécessite un périphérique d'isolation pour éviter une situation de split brain (cerveau divisé) lorsque les noeuds de grappe actifs ne sont plus synchronisés. Pour cela, vous pouvez utiliser une image Ceph RBD avec un périphérique de traitement par blocs Stonith (SBD). Pour plus d'informations, reportez-vous à la page https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-guide/#sec-ha-storage-protect-fencing-setup.

    Si elle n'existe pas encore, créez une réserve RBD appelée rbd (voir Section 18.1, « Création d'une réserve ») et associez-la à l'application rbd (voir Section 18.5.1, « Association de réserves à une application »). Créez ensuite une image RBD associée appelée sbd01 :

    cephuser@adm > ceph osd pool create rbd
    cephuser@adm > ceph osd pool application enable rbd rbd
    cephuser@adm > rbd -p rbd create sbd01 --size 64M --image-shared
  3. Préparez earth et mars pour héberger le service Samba :

    1. Assurez-vous que les paquetages suivants sont installés avant de poursuivre : ctdb, tdb-tools et samba.

      # zypper in ctdb tdb-tools samba samba-ceph
    2. Assurez-vous que les services Samba et CTDB sont arrêtés et désactivés :

      # systemctl disable ctdb
      # systemctl disable smb
      # systemctl disable nmb
      # systemctl disable winbind
      # systemctl stop ctdb
      # systemctl stop smb
      # systemctl stop nmb
      # systemctl stop winbind
    3. Ouvrez le port 4379 de votre pare-feu sur tous les noeuds. Cette ouverture est nécessaire pour que CTDB communique avec d'autres noeuds de la grappe.

  4. Sur earth, créez les fichiers de configuration de Samba. Ils seront ensuite automatiquement synchronisés avec mars.

    1. Insérez une liste d'adresses IP privées des noeuds de la passerelle Samba dans le fichier /etc/ctdb/nodes. Pour plus d'informations, reportez-vous à la page de manuel ctdb (man 7 ctdb).

      192.168.1.1
      192.168.1.2
    2. Configurez Samba. Ajoutez les lignes suivantes à la section [global] de /etc/samba/smb.conf. Utilisez le nom d'hôte de votre choix à la place de CTDB-SERVER (tous les noeuds de la grappe apparaîtront sous la forme d'un gros noeud portant ce nom). Ajoutez également une définition de partage. Prenons SHARE_NAME (NOM_PARTAGE) comme exemple :

      [global]
        netbios name = SAMBA-HA-GW
        clustering = yes
        idmap config * : backend = tdb2
        passdb backend = tdbsam
        ctdbd socket = /var/lib/ctdb/ctdb.socket
        # disable print server
        load printers = no
        smbd: backgroundqueue = no
      
      [SHARE_NAME]
        path = /
        vfs objects = ceph
        ceph: config_file = /etc/ceph/ceph.conf
        ceph: user_id = samba.gw
        read only = no
        oplocks = no
        kernel share modes = no

      Notez que les fichiers /etc/ctdb/nodes et /etc/samba/smb.conf doivent correspondre sur tous les noeuds de passerelle Samba.

  5. Installez et amorcez la grappe SUSE Linux Enterprise High Availability.

    1. Enregistrez l'extension SUSE Linux Enterprise High Availability sur earth et mars :

      root@earth # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
      root@mars # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
    2. Installez ha-cluster-bootstrap sur les deux noeuds :

      root@earth # zypper in ha-cluster-bootstrap
      root@mars # zypper in ha-cluster-bootstrap
    3. Assignez l'image RBD sbd01 sur les deux passerelles Samba via rbdmap.service.

      Modifiez /etc/ceph/rbdmap et ajoutez une entrée pour l'image SBD :

      rbd/sbd01 id=samba.gw,keyring=/etc/ceph/ceph.client.samba.gw.keyring

      Activez et démarrez rbdmap.service :

      root@earth # systemctl enable rbdmap.service && systemctl start rbdmap.service
      root@mars # systemctl enable rbdmap.service && systemctl start rbdmap.service

      Le périphérique /dev/rbd/rbd/sbd01 doit être disponible sur les deux passerelles Samba.

    4. Initialisez la grappe sur earth et laissez mars la rejoindre.

      root@earth # ha-cluster-init
      root@mars # ha-cluster-join -c earth
      Important
      Important

      Au cours du processus d'initialisation et de jointure de la grappe, il vous sera demandé de manière interactive si vous souhaitez utiliser SBD. Confirmez avec y, puis spécifiez /dev/rbd/rbd/sbd01 comme chemin d'accès au périphérique de stockage.

  6. Vérifiez l'état de la grappe. Vous devriez voir deux noeuds ajoutés à la grappe :

    root@earth # crm status
    2 nodes configured
    1 resource configured
    
    Online: [ earth mars ]
    
    Full list of resources:
    
     admin-ip       (ocf::heartbeat:IPaddr2):       Started earth
  7. Exécutez les commandes suivantes sur earth pour configurer la ressource CTDB :

    root@earth # crm configure
    crm(live)configure# primitive ctdb ocf:heartbeat:CTDB params \
        ctdb_manages_winbind="false" \
        ctdb_manages_samba="false" \
        ctdb_recovery_lock="!/usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper
            ceph client.samba.gw cephfs_metadata ctdb-mutex"
        ctdb_socket="/var/lib/ctdb/ctdb.socket" \
            op monitor interval="10" timeout="20" \
            op start interval="0" timeout="200" \
            op stop interval="0" timeout="100"
    crm(live)configure# primitive smb systemd:smb \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# primitive nmb systemd:nmb \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# primitive winbind systemd:winbind \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# group g-ctdb ctdb winbind nmb smb
    crm(live)configure# clone cl-ctdb g-ctdb meta interleave="true"
    crm(live)configure# commit
    Astuce
    Astuce : primitives nmb et winbind facultatives

    Si vous n'avez pas besoin de parcourir un partage réseau, il n'est pas nécessaire d'ajouter la primitive nmb.

    La primitive winbind est uniquement requise en cas de configuration en tant que membre du domaine Active Directory. Reportez-vous à la Section 24.2, « Jointure de la passerelle Samba et d'Active Directory ».

    Le fichier binaire /usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper de l'option de configuration ctdb_recovery_lock possède les paramètres CLUSTER_NAME (NOM_GRAPPE), CEPHX_USER (UTILISATEUR_CEPHX), RADOS_POOL (RÉSERVE_RADOS) et RADOS_OBJECT (OBJET_RADOS), dans cet ordre.

    Un paramètre de timeout de verrouillage supplémentaire peut être ajouté à la suite pour remplacer la valeur par défaut utilisée (10 secondes). Une valeur plus élevée augmente le délai de basculement du maître de récupération CTDB, tandis qu'une valeur plus faible peut entraîner une détection incorrecte de l'arrêt du maître de récupération, déclenchant des basculements bagottants.

  8. Ajoutez une adresse IP en grappe :

    crm(live)configure# primitive ip ocf:heartbeat:IPaddr2
        params ip=192.168.2.1 \
        unique_clone_address="true" \
        op monitor interval="60" \
        meta resource-stickiness="0"
    crm(live)configure# clone cl-ip ip \
        meta interleave="true" clone-node-max="2" globally-unique="true"
    crm(live)configure# colocation col-with-ctdb 0: cl-ip cl-ctdb
    crm(live)configure# order o-with-ctdb 0: cl-ip cl-ctdb
    crm(live)configure# commit

    Si unique_clone_address est défini sur true, l'agent de ressource IPaddr2 ajoute un ID de clone à l'adresse spécifiée, ce qui permet d'obtenir trois adresses IP différentes. Elles ne sont généralement pas nécessaires, mais aident à l'équilibrage de la charge. Pour plus d'informations sur ce sujet, reportez-vous à l'adresse https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-guide/#cha-ha-lb.

  9. Vérifiez le résultat :

    root@earth # crm status
    Clone Set: base-clone [dlm]
         Started: [ factory-1 ]
         Stopped: [ factory-0 ]
     Clone Set: cl-ctdb [g-ctdb]
         Started: [ factory-1 ]
         Started: [ factory-0 ]
     Clone Set: cl-ip [ip] (unique)
         ip:0       (ocf:heartbeat:IPaddr2):       Started factory-0
         ip:1       (ocf:heartbeat:IPaddr2):       Started factory-1
  10. Effectuez un test à partir d'une machine client. Sur un client Linux, exécutez la commande suivante pour vérifier si vous pouvez copier des fichiers depuis et vers le système :

    # smbclient //192.168.2.1/myshare

24.1.3.1 Redémarrage des ressources HA Samba

Après toute modification de la configuration de Samba ou CTDB, un redémarrage des ressources HA peut s'avérer nécessaire pour que les modifications prennent effet. Cette opération peut être effectuée via :

# crm resource restart cl-ctdb

24.2 Jointure de la passerelle Samba et d'Active Directory

Vous pouvez configurer la passerelle Ceph Samba pour qu'elle devienne membre du domaine Samba avec prise en charge d'Active Directory (AD). En tant que membre du domaine Samba, vous pouvez utiliser les utilisateurs et groupes du domaine des listes d'accès local (ACL) sur les fichiers et répertoires du CephFS exporté.

24.2.1 Préparation de l'installation de Samba

Cette section présente les étapes préparatoires à effectuer avant de configurer Samba. Commencer avec un environnement propre évite la confusion et permet de vous assurer qu'aucun fichier de l'installation Samba précédente n'est mélangé avec l'installation du nouveau membre du domaine.

Astuce
Astuce : synchronisation des horloges

Les horloges de tous les noeuds de passerelle Samba doivent être synchronisées avec le contrôleur du domaine Active Directory. Les décalages d'horloge peuvent entraîner des échecs d'authentification.

Vérifiez qu'aucun processus de caching de nom ou Samba n'est en cours d'exécution :

cephuser@smb > ps ax | egrep "samba|smbd|nmbd|winbindd|nscd"

Si la sortie répertorie des processus samba, smbd, nmbd, winbindd ou nscd, arrêtez-les.

Si vous avez déjà exécuté une installation Samba sur cet hôte, supprimez le fichier /etc/samba/smb.conf. Supprimez également tous les fichiers de base de données Samba, tels que les fichiers *.tdb et *.ldb. Pour lister les répertoires contenant des bases de données Samba, exécutez la commande suivante :

cephuser@smb > smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"

24.2.2 Vérification de DNS

Active Directory (AD) utilise DNS pour localiser d'autres contrôleurs de domaine (DC) et services, tels que Kerberos. Par conséquent, les membres et les serveurs du domaine AD doivent être en mesure de résoudre les zones DNS AD.

Vérifiez que DNS est correctement configuré et que la recherche directe et inversée donne une résolution correcte, par exemple :

cephuser@adm > nslookup DC1.domain.example.com
Server:         10.99.0.1
Address:        10.99.0.1#53

Name:   DC1.domain.example.com
Address: 10.99.0.1
cephuser@adm > 10.99.0.1
Server:        10.99.0.1
Address:	10.99.0.1#53

1.0.99.10.in-addr.arpa	name = DC1.domain.example.com.

24.2.3 Résolution des enregistrements SRV

AD utilise les enregistrements SRV pour localiser des services, tels que Kerberos et LDAP. Pour vérifier que les enregistrements SRV sont résolus correctement, utilisez le shell interactif nslookup, par exemple :

cephuser@adm > nslookup
Default Server:  10.99.0.1
Address:  10.99.0.1

> set type=SRV
> _ldap._tcp.domain.example.com.
Server:  UnKnown
Address:  10.99.0.1

_ldap._tcp.domain.example.com   SRV service location:
          priority       = 0
          weight         = 100
          port           = 389
          svr hostname   = dc1.domain.example.com
domain.example.com      nameserver = dc1.domain.example.com
dc1.domain.example.com  internet address = 10.99.0.1

24.2.4 Configuration de Kerberos

Samba prend en charge les interfaces dorsales Heimdal et MIT Kerberos. Pour configurer Kerberos sur le membre du domaine, définissez ce qui suit dans votre fichier /etc/krb5.conf :

[libdefaults]
	default_realm = DOMAIN.EXAMPLE.COM
	dns_lookup_realm = false
	dns_lookup_kdc = true

L'exemple précédent configure Kerberos pour le domaine DOMAIN.EXAMPLE.COM. Nous déconseillons de définir d'autres paramètres dans le fichier /etc/krb5.conf. Si /etc/krb5.conf contient une ligne include, cela ne fonctionnera pas ; vous devez supprimer cette ligne.

24.2.5 Résolution du nom de l'hôte local

Lorsque vous joignez un hôte au domaine, Samba essaie d'enregistrer le nom d'hôte dans la zone DNS AD. Pour cela, l'utilitaire net doit être en mesure de résoudre le nom de l'hôte à l'aide de DNS ou d'une entrée correcte dans le fichier /etc/hosts.

Pour vérifier que votre nom d'hôte se résout correctement, utilisez la commande getent hosts :

cephuser@adm > getent hosts example-host
10.99.0.5      example-host.domain.example.com    example-host

La résolution du nom d'hôte et du nom de domaine complet (FQDN) ne doit pas renvoyer l'adresse IP 127.0.0.1 ni quelconque adresse IP autre que celle utilisée sur l'interface LAN du membre du domaine. Si aucune sortie n'est retournée ou si la résolution de l'hôte donne une adresse IP incorrecte et que vous n'utilisez pas DHCP, configurez l'entrée correcte dans le fichier /etc/hosts :

127.0.0.1      localhost
10.99.0.5      example-host.samdom.example.com    example-host
Astuce
Astuce : DHCP et /etc/hosts

Si vous utilisez DHCP, vérifiez que le fichier /etc/hosts contient uniquement la ligne « 127.0.0.1 ». Si les problèmes persistent, contactez l'administrateur de votre serveur DHCP.

Si vous avez besoin d'ajouter des alias au nom d'hôte de la machine, ajoutez-les à la fin de la ligne qui commence avec l'adresse IP de la machine, et non à la ligne « 127.0.0.1 ».

24.2.6 Configuration de Samba

Cette section présente des informations sur les options de configuration spécifiques que vous devez inclure dans la configuration de Samba.

L'adhésion au domaine Active Directory est principalement configurée en définissant security = ADS avec les paramètres d'assignation de domaine et d'ID Kerberos appropriés dans la section [global] du fichier /etc/samba/smb.conf.

[global]
  security = ADS
  workgroup = DOMAIN
  realm = DOMAIN.EXAMPLE.COM
  ...

24.2.6.1 Choix de l'interface dorsale pour l'assignation d'ID dans winbindd

Si vos utilisateurs doivent avoir des shells de connexion et/ou des chemins de répertoire privé Unix différents, ou si vous souhaitez qu'ils aient le même ID partout, vous devez utiliser l'interface dorsale « ad » winbind et ajouter des attributs RFC2307 à AD.

Important
Important : attributs RFC2307 et numéros d'ID

Les attributs RFC2307 ne sont pas ajoutés automatiquement lors de la création d'utilisateurs ou de groupes.

Les numéros d'ID trouvés sur un contrôleur de domaine (nombres compris dans la plage de 3000000) ne sont pas des attributs RFC2307 et ne seront pas utilisés sur les membres du domaine Unix. Si vous avez besoin d'avoir les mêmes numéros d'ID partout, ajoutez les attributs uidNumber et gidNumber à AD et utilisez l'interface dorsale « ad » winbind sur les membres du domaine Unix. Si vous décidez d'ajouter des attributs uidNumber et gidNumber à AD, n'utilisez pas de numéros de la plage de 3000000.

Si vos utilisateurs emploient le contrôleur de domaine AD Samba uniquement pour l'authentification, sans y stocker de données ni s'y connecter, vous pouvez utiliser l'interface dorsale « rid » winbind. Celle-ci calcule les ID utilisateur et de groupe à partir du RID Windows*. Si vous utilisez la même section [globale] du fichier smb.conf sur chaque membre du domaine Unix, vous obtiendrez les mêmes ID. Si vous utilisez l'interface dorsale « rid », vous n'avez pas besoin d'ajouter quoi que ce soit à AD et les attributs RFC2307 sont ignorés. En cas d'utilisation de l'interface dorsale « rid », définissez les paramètres template shell et template homedir dans smb.conf. Ces paramètres sont globaux de sorte que tout le monde obtient le même shell de connexion et le même chemin de répertoire privé Unix (contrairement aux attributs RFC2307 qui permettent de définir des shells et des chemins de répertoire privé Unix individuels).

Il existe une autre façon de configurer Samba, lorsque vos utilisateurs et groupes doivent avoir le même ID partout, mais que vous avez besoin que vos utilisateurs aient le même shell de connexion et emploient le même chemin de répertoire privé Unix. Pour ce faire, utilisez l'interface dorsale « ad » winbind et les lignes de modèle dans smb.conf. De cette façon, vous n'avez qu'à ajouter les attributs uidNumber et gidNumber à AD.

Astuce
Astuce : supplément d'informations sur les interfaces dorsales pour l'assignation d'ID

Pour des informations plus détaillées sur les interfaces dorsales disponibles pour l'assignation d'ID, reportez-vous aux pages de manuel correspondantes : man 8 idmap_ad, man 8 idmap_rid et man 8 idmap_autorid.

24.2.6.2 Définition des plages d'ID utilisateur et de groupe

Après avoir décidé de l'interface dorsale winbind à employer, vous devez spécifier les plages à utiliser avec l'option idmap config dans smb.conf. Par défaut, un membre du domaine Unix comporte plusieurs blocs d'utilisateurs et de groupes :

Tableau 24.1 : Blocs d'ID utilisateur et de groupe par défaut
IDPlage
0-999Utilisateurs et groupes du système local.
À partir de 1000Utilisateurs et groupes Unix locaux.
À partir de 10000Utilisateurs et groupes DOMAIN

Comme vous pouvez le constater d'après les plages ci-dessus, vous ne devez pas définir les plages « * » ou « DOMAIN » pour commencer à 999 ou moins, car elles interfèreraient avec les utilisateurs et les groupes du système local. Vous devez également laisser un espace pour tous les utilisateurs et groupes Unix locaux, de sorte que commencer les plages idmap config à 3000 semble être un bon compromis.

Vous devez décider de la taille que votre domaine « DOMAIN » est susceptible d'atteindre et si vous prévoyez d'avoir des domaines approuvés. Ensuite, vous pouvez définir les plages idmap config comme suit :

Tableau 24.2 : Plages d'ID
DomainePlage
*3000-7999
DOMAINE10000-999999
APPROUVÉ1000000-9999999

24.2.6.3 Assignation du compte d'administrateur de domaine à l'utilisateur root local

Samba vous permet d'assigner des comptes de domaine à un compte local. Utilisez cette fonctionnalité pour exécuter des opérations de fichier sur le système de fichiers du membre du domaine en tant qu'utilisateur différent du compte qui a demandé l'opération sur le client.

Astuce
Astuce : assignation de l'administrateur de domaine (facultative)

L'assignation de l'administrateur de domaine au compte root local est facultative. Configurez l'assignation uniquement si l'administrateur de domaine doit être en mesure d'exécuter des opérations de fichier sur le membre du domaine à l'aide d'autorisations root. Sachez que l'assignation de l'administrateur au compte root ne vous permet pas de vous connecter aux membres du domaine Unix en tant qu'administrateur.

Pour assigner l'administrateur de domaine au compte root local, procédez comme suit :

  1. Ajoutez le paramètre suivant à la section [global] de votre fichier smb.conf :

    username map = /etc/samba/user.map
  2. Créez le fichier /etc/samba/user.map avec le contenu suivant :

    !root = DOMAIN\Administrator
Important
Important

Si vous utilisez l'interface dorsale d'assignation d'ID « ad », ne configurez pas l'attribut uidNumber pour le compte d'administrateur de domaine. Si l'attribut est défini pour le compte, la valeur remplace l'UID local « 0 » de l'utilisateur root, de sorte que l'assignation échoue.

Pour plus de détails, reportez-vous au paramètre username map sur la page de manuel de smb.conf (man 5 smb.conf).

24.2.7 Jointure du domaine Active Directory

Pour joindre l'hôte à un annuaire Active Directory, exécutez la commande suivante :

cephuser@smb > net ads join -U administrator
Enter administrator's password: PASSWORD
Using short domain name -- DOMAIN
Joined EXAMPLE-HOST to dns domain 'DOMAIN.example.com'

24.2.8 Configuration de NSS

Afin que les utilisateurs et groupes du domaine soient disponibles pour le système local, vous devez activer la bibliothèque NSS (Name Service Switch). Ajoutez l'entrée winbind à la fin des bases de données suivantes dans le fichier /etc/nsswitch.conf :

passwd: files winbind
group:  files winbind
Important
Important : considérations
  • Gardez l'entrée file comme première source pour les deux bases de données. Cela permet à NSS de rechercher les utilisateurs et groupes du domaine à partir des fichiers /etc/passwd et /etc/group avant d'interroger le service winbind.

  • N'ajoutez pas l'entrée winbind à la base de données shadow NSS. Cela peut entraîner l'échec de l'utilitaire wbinfo.

  • N'utilisez pas les mêmes noms d'utilisateur dans le fichier /etc/passwd local et dans le domaine.

24.2.9 Démarrage des services

Après avoir modifié la configuration, redémarrez les services Samba conformément à la Section 24.1.2.1, « Démarrage des services Samba » ou à la Section 24.1.3.1, « Redémarrage des ressources HA Samba ».

24.2.10 Test de la connectivité winbindd

24.2.10.1 Envoi d'une commande ping winbindd

Pour vérifier si le service winbindd est en mesure de se connecter aux contrôleurs de domaine (DC) AD ou à un contrôleur de domaine primaire (PDC), entrez :

cephuser@smb > wbinfo --ping-dc
checking the NETLOGON for domain[DOMAIN] dc connection to "DC.DOMAIN.EXAMPLE.COM" succeeded

Si la commande précédente échoue, vérifiez que le service winbindd est en cours d'exécution et que le fichier smb.conf est configuré correctement.

24.2.10.2 Recherche d'utilisateurs et de groupes du domaine

La bibliothèque libnss_winbind vous permet de rechercher des utilisateurs et groupes du domaine. Par exemple, pour rechercher l'utilisateur du domaine « DOMAIN\demo01 » :

cephuser@smb > getent passwd DOMAIN\\demo01
DOMAIN\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash

Pour rechercher le groupe du domaine « Domain Users » :

cephuser@smb > getent group "DOMAIN\\Domain Users"
DOMAIN\domain users:x:10000:

24.2.10.3 Assignation d'autorisations de fichier aux utilisateurs et groupes du domaine

La bibliothèque NSS vous permet d'utiliser des comptes d'utilisateurs du domaine et des groupes dans les commandes. Par exemple, pour définir le propriétaire d'un fichier sur l'utilisateur du domaine « demo01 » et le groupe sur le groupe de domaine « Domain Users », entrez :

cephuser@smb > chown "DOMAIN\\demo01:DOMAIN\\domain users" file.txt