LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


samba_domcontroller

Préambule

Il est possible de spécifier à Samba de jouer le rôle d'un contrôleur de domaine primaire.

L'intérêt majeur est d'assurer une authentification centralisée et sécurisée des utilisateurs.

L'organisation en domaine permet également la gestion centralisée des scripts d'ouverture de session et des profils utilisateurs.
L'objectif est de renforcer la possibilité de connexion depuis un poste de travail quelconque, c'est à dire, un utilisateur peut retrouver son environnement de travail sur n'importe quel ordinateurs relié au contrôleur de domaine.

Note :

En revanche, Samba ne peut pas 'encore' jouer le rôle d'un contrôleur de domaine en environnement purement Active Directory.
Samba, ne propose donc pas de gestion d'annuaire, de gpo etc…il faut se tourner vers openldap pour le moment ou attendre la version 4 de Samba qui le proposera.

A. Adaptation du smb.conf

Il y a 6 directives à ajouter au fichier de configuration dans la section [global]

  • Wins support
  • domain master
  • local master
  • preferred master
  • os level
  • domain logons

Wins support

On définit notre serveur samba en tant que serveur Wins.
Par défaut sur les stations XP, 2000, 2003 la résolution de noms se fait d'abord par une résolution DNS et si il n'y a pas de réponses, il y a basculement sur une résolution des noms NetBios.

En revanche sur des machines clientes 95,98,Me et serveur NT4, il y a d'abord une résolution NetBios puis résolution DNS.

Un serveur Wins est déclaré afin d'éviter un engorgement du réseau à cause des requêtes de diffusion (broadcast).

Fonctionnement du serveur Wins

Un client utilise le serveur WINS pour faire enregistrer son propre nom et adresse ip.
Cet enregistrement est renouvelé périodiquement. Quand le pc s'arrête normalement, le client informe le serveur WINS et peut libérer le nom NetBIOS.

Le fichier “LMHOST” peut-être utilisé si il n'y a pas de serveurs WINS sur le réseau.
Cela évite le recours aux requêtes de diffusion.

Le fichier “host” est la même chose mais concernant le DNS.

domain logons

Acceptation des connexions de type domaine

domain master

Spécifie que le serveur SAMBA doit jouer le rôle de contrôleur de domaine.

Note : Si Samba doit jouer le rôle de DC alors il faudra ajouter 2 nouvelles directives :

  • Local Master

Participation à l'élection du Maître explorateur.

  • os level

Valeur des élections du voisinage réseau Preferred master

Provoquer une élection du “local master browser”. Explications :

Dans un groupe de travail, un ordinateur est désigné pour maintenir une liste actualisée des systèmes accessibles.

Cet ordinateur est baptisé « local master browser ». Cela évite que chaque clients du réseau émettent des requêtes de diffusion.

Au démarrage de Samba, l'option “preferred master” provoque une élection. La valeur de l'“os level” lui permet de battre le systèmes windows.

Comment est défini l'os level ?

  • Windows Xp = 64
  • Windows NT/2000/2003 jouant le rôle d'un PDC = 32
  • Windows NT/2000/2003 ne jouant pas ce rôle = 16
  • Windows 95/98/Me = 1

Pour être sur que votre serveur remporte l'élection, un “os level” de 255 est idéal. Néanmoins, si vous avez d'autres serveurs Samba dans votre réseau, la même configuration provoquerait des conflits dans l'élection du “local master browser”.

Il faut pour cela diminuer la valeur “os level” et désactiver l'option “preferred master”.

Votre fichier smb devrait ressembler à ça :

[global]
        workgroup = Kameleon
        netbios name = srvsamba
        server string = Serveur Samba
        security = user
        wins support = yes
        domain master = yes
        local master = yes
        preferred master = yes
        os level = 255
        domain logons = yes

Pourquoi security = user ?

L' authentification des utilisateurs se fait sur le serveur samba. Une « security = domain » correspond à une authentification gérée par d' autres serveurs.

A partir de cette étape, il va falloir vérifier que la résolution de nom se fasse.
C'est une étape obligatoire, si cela ne fonctionne pas, il n'est pas nécessaire d'aller plus loin.


Pour tester la résolution de nom :

nbtstat -a nomnetbios du serveur samba

Si la résolution ne se fait pas, alors vérifier les points suivants :

  • Les demons smbd et nmbd sont ils redémarrés ?
  • Avez-vous ajouté l'adresse du serveur Wins dans vos paramètres TCP/IP ?
  • Avez-vous fait un “testparm” afin de vérifier la conformité de votre fichier smb ?
  • Etes-vous dans même “groupe de travail” ?

Note :

A réaliser à partir d'une machine Windows

B. Intégrer sa machine client au domaine

Sur votre Windows :

  • Proprité sur “Poste de Travail”,
  • Nom de l'ordinateur,
  • Mofier > Domaine
  • Entrer le nom netbios du serveur

Si tout se passe bien, une fenêtre d'authentification devrait apparaître.

  • Saissir le login et le mot de passe de l'administrateur du serveur (root + pass).

A cet étape l'authentification échoue et c'est normal.

Dans le monde Windows, une machine est globalement gérée comme un utilisateur et dispose d'un compte dans un domaine.

Une machine dont le nom netbios est « machine » dispose dans le domaine un compte « machine$ ».

Il existe 2 méthodes pour intégrer la machine au domaine.

Soit :

  • Manuellement
  • via une option dans le smb.

1er méthode

Procédures :

  1. Afin de mieux comprendre le fonctionnement nous allons nous même ajouter une machine cliente (windows xp ici) dans le fichier « /etc/passwd » et dans la base SAM du serveur Samba.
useradd machine$
smbpasswd -a -m machine

-m” specifie que l'utilisateur ajouté (-a) est un nom de machine existant (-m)

Note :

Interrogez la base SAM avec “pdbedit -L” afin de vérifier l'inscription du pc.

  1. Il faut modifier votre fichier de configuration « smb » et y ajouter la section suivante :
[netlogon] (répertoire a créer, chmod 755)
path = /home/netlogon
writable = no
browsable = no

netlogon

Cette section est obligatoire pour permettre les connexions de type domaine.

Ce partage n'a pas besoin d'apparaitre dans le voisinage réseau et il n'est pas nécessaire d'en activer le partage (writable).

  • Créer le répertoire [netlogon]
  • Créer le répertoire qui contiendra le profil de l'utilisateur qui doit se connecter au domaine.
  • Modifer les droits « chown » par « propriétaire=utilisateur; groupe = root »
  • Modifier les droits « chmod » en « 770 » (suggestion).

Note :

Dans ce cas, seul « l'utilisateur » et le groupe « root » ont un « accès total » sur le répertoire.
Les autres groupes ne peuvent pas en consulter le contenu.

Si le répertoire n'est pas crée, l'utilisateur se connectera au domaine mais ses fichiers ne seront pas envoyés au DC. Pour tout problèmes aidez vous du « log.smbd » qui est très bavard

  • Créer l'utilisateur « root » dans la base SAM de samba. Pour des questions de sécurité, il serait judicieux de mettre un mot de passe différent qui celui utilisé sur le système par « root »
  • Rejoindre le domaine avec « root + mp »
  • Se connecter au domaine avec le « login » d'un utilisateur présent dans la base SAM.
  • Si il n'y a pas de messages d'erreurs, fermez votre session et vérifiez que l'envoi du profil de l'utilisateur à bien été effectué. Vous devriez obtenir quelque chose de semblable.

2ème méthode

Nous allons ajouter une option dans notre script pour que les machines distantes s'inscrivent automatiquement lors de l'inscription au domaine. Cela concerne également la création automatique des répertoires contenant le profil des utilisateurs.

Pour cela nous allons éditer notre fichier « smb » et ajouter dans la section [global] cette option.

add machine script = /usr/sbin/useradd -d /var/lib/nobody -M -g 100 -s /bin/false %u

Explications :

Le compte ne sera pas utilisé en tant que compte interactif mais uniquement pour les besoins internes de Samba. Il est donc inutile de prévoir un répertoire de connexion (-d /var/lib/nobody -M) et judicieux de lui associer un shell invalide (-s /bin/false).

La variable “%u“contiendra le nom Netbios de l'ordinateur client. La ligne adéquate sera ajoutée dans “/etc/passwd

Il vous est possible à partir de ce moment d'intégrer une machine windows dans votre domaine sans en ajouter son nom dans le fichier « passwd » (useradd) et dans la « base SAM » (smbpasswd) de votre serveur.

Après enregistrement du pc dans le domaine, vérifier dans « pdbedit-L » que son nom Netbios apparaît.

C. Les profils errants

Il faut ajouter une nouvelle option dans [global] et ajouter la section [profiles] à notre fichier de conf.

[global]
logon path = \\%L\profiles\%U
#time server = yes
[profiles]
path = /home/profiles
browsable = no
writable = yes
create mask = 0600
directory mask = 0700

Explications :

  • logon path

On spécifie l'emplacement des profils itinérants (en anglais roaming profiles)

%L > reprend le nom Netbios du serveur Samba
profiles > le dossier de partage à créer avec un chmod 777
%U >Identité souhaité par l'utilisateur du partage

  • time server

Avec cette option, le serveur jouera également “serveur de temps”. Il permet de synchroniser l'heure des machines clientes avec celle du serveur.

L'option est désactivée puisqu' elle nécessite d'ajouter une option dans les scripts de démarrage que nous verrons par la suite.

  • Create Mask

Adopte la notation octale des droits UNIX. Le propriétaire des nouveaux fichiers aura les droits « rw- ».

  • Directory Mask

Le propriétaire des nouveaux répertoires aura les droits « rwx ».

D. Définir un groupe Unix en « membre de .... » sur le Domaine.

Par défaut tous les utilisateurs crées sur votre distribution sont des « Utilisateurs du domaine ». Il en est de même pour l'utilisateur « root ».

Pour passer le groupe “root” en “Administrateur du domaine” il va falloir entrer cette commande dans votre shell.

net groupmap add rid=512 ntgroup="Domain Admins" unixgroup=root

Pour vérifier quels sont les groupes Unix mappés avec les groupes du Domaine, il faut utiliser la commande:

net groupmap list

Vous devriez obtenir un résultat de ce type :

Domain Admins (S-1-5-21-2547222302-1596225915-2414751004-512) -> domadmin

E. Scripts de démarrage

Il est possible d'ajouter un script de démarrage, il faut pour cela ajouter l'option “logon script” dans [global]. La section [netlogon] contiendra nos différents scripts.

[global]
logon script = logon.bat

Ce partage n'a pas besoin d'apparaitre dans le voisinage réseau et il ne nécessite pas le droit d'écriture.

Note :

A la création du script, veillez bien à le faire sur une machine windows. En effet, sous Unix les saut de lignes saut définies par \n alors que sous Windows il s'agit de \r \n
Il vous suffira d'envoyer votre script sur un de vos partages samba.

Exemple de script :

net use z: \\ipserveur ou nomnetbios\votre dossier de partage
net time \\serveur /set/y

Erreurs possibles :

Si votre script ne se lance pas, vérifiez le chmod de votre fichier. Les utilisateurs peuvent ils l'exécuter.

  • chmod -r permet d'attribuer les permissions de manière récursive.
  • Seul l' utilisateur défini en tant qu' « Administrateur » peut l'éxecuter. Cela est normal.

Les utilisateurs n'ont pas le droit de modifier l'heure et la date.

Dans global il est possible d'ajouter l'option

logon drive = lettre lecteur réseau
samba_domcontroller.txt · Dernière modification : 2018/11/17 12:54 de 127.0.0.1