LinuxPedia

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

Outils pour utilisateurs

Outils du site


samba_domcontroller
no way to compare when less than two revisions

Différences

Ci-dessous, les différences entre deux révisions de la page.


samba_domcontroller [2018/11/17 12:54] (Version actuelle) – créée - modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== 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__** :
 +
 +<code>[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</code>
 +
 +**__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__** :
 +
 +<code>nbtstat -a nomnetbios du serveur samba</code>
 +
 +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__** :
 +
 +  - 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.
 +
 +
 +<code>
 +useradd machine$
 +smbpasswd -a -m machine</code>
 +
 +"**-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.//
 +
 +  - __Il faut modifier votre fichier de configuration « smb » et y ajouter la section suivante__ :
 +
 +<code>
 +[netlogon] (répertoire a créer, chmod 755)
 +path = /home/netlogon
 +writable = no
 +browsable = no
 +</code>
 +
 +**__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.
 +
 +{{manuel:profil.jpg|}}
 +
 +
 +===== 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.
 +
 +
 +<code>
 +add machine script = /usr/sbin/useradd -d /var/lib/nobody -M -g 100 -s /bin/false %u</code>
 +
 +**__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.
 +
 +
 +<code>
 +[global]
 +logon path = \\%L\profiles\%U
 +#time server = yes
 +</code>
 +
 +<code>
 +[profiles]
 +path = /home/profiles
 +browsable = no
 +writable = yes
 +create mask = 0600
 +directory mask = 0700
 +</code>
 +
 +**__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.
 +
 +<code>
 +net groupmap add rid=512 ntgroup="Domain Admins" unixgroup=root
 +</code>
 +
 +__Pour vérifier quels sont les groupes Unix mappés avec les groupes du Domaine, il faut utiliser la commande__:
 +
 +<code>
 +net groupmap list
 +</code>
 +
 +__Vous devriez obtenir un résultat de ce type__ :
 +
 +<code>Domain Admins (S-1-5-21-2547222302-1596225915-2414751004-512) -> domadmin</code>
 +
 +
 +
 +====== 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.
 +
 +<code>
 +[global]
 +logon script = logon.bat
 +</code>
 +
 +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__** :
 +
 +<code>net use z: \\ipserveur ou nomnetbios\votre dossier de partage
 +net time \\serveur /set/y</code>
 +
 +**__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
 +
 +<code>logon drive = lettre lecteur réseau</code>
samba_domcontroller.txt · Dernière modification : 2018/11/17 12:54 de 127.0.0.1