Tutoriel: Samba, un controleur de domaine, sous linux
On va tenter l'installation d'un contrôleur de domaine (terme windowsien) sous une débian 6. Car oui, depuis pas mal de temps déjà, samba sait aller au delà du partage de fichiers et d'imprimantes.
Pour le moment je reste basique. C'est à dire authentification des utilisateurs avec quelques mappages de dossiers. J'essaierai d'aller au delà dans un autre billet.
On verra le paramétrage, puis un test sur windows7.
Quelques documents
Il y a pleins de tutoriels là dessus, je ne suis pas original mais perso, j'ai du en croiser plusieurs pour faire ce que je voulais.
- Sur Tux planet, un super tutoriel très simple. Un contrôleur de domaine avec Samba, Je m'appuierai dessus pour une bonne partie de la suite. Bien que basé sur une ancienne version de samba.
- Une Excellente documentation aussi, à jour. Qui a l'intérêt d'aborder la gestion du serveur.
- Pour l'intégration d'un windows 7, les clés de registres à modifier ou le patch microsoft sont expliqués sur le wiki samba.
Serveur
Un serveur débian propre, sans rien de plus.
Samba!
Installation
apt-get install samba
Actuellement dans les paquets de débian Lenny, c'est la version 3.5 de samba qui est installée.
Configuration.
Explication. / synoptique
- Chaque utilisateur aura un dossier personnel, une tête de lecteur réseau H sur leur poste de travail, qui pointe en fait vers le homedir de l'user linux correspondant.
- Les profils itinérants sont stockés sur le serveur dans /home/samba/profiles/username. Le partage réseau quand à lui est //serveur/profiles/username
- Netlogon (/home/samba/netlogon sur le serveur; //serveur/netlogon en chemin UnC) Sert aux scripts de démarrage et de directives qui s'appliquent aux ordinateurs, ou lors de la connexion des utilisateurs. Cependant Dans cette version de samba, il n'y a pas besoin de créer à la mano les fichiers batch pour monter des dossiers. Il va les générer tout seul comme un grand à partir des directives mises dans son fichier de configuration.
Le fichier de configuration /etc/samba/smb.conf est divisé en plusieurs parties: [global] et une mini partie par partage. Voyons le Global.
Configuration générale
Je liste dans un premier temps quelques directives du fichier sur lesquelles je pense utile de faire un petit commentaire.
Le nom du domaine ou workgroup:
workgroup = dom_grouik
Le nom du serveur sur le réseau sera son nom d'installation:
server string = %h
Pour le moment je laisse WINS désactivé. WINS assure (assurait, ça parait obsolète) un service de noms netbios, Un équivalent du DNS quoi, mais à plus petite échelle. A cette étape du tuto, je ne sais pas encore si je vais retenir cette solution, ou me baser sur un bind ou autre.
# wins support = no
Je laisse interfaces commentée car par défaut, samba répondra à toutes les requêtes. Mais si vous souhaitiez limiter à un VLAN particulier, c'est là qu'il faut le mettre:
; interfaces = 127.0.0.0/8 eth0
security = user
Les mots de passe unix et samba seront synchronisés. Cette commande active l’exécution du programme externe défini à la directive passwd program, lors du changement de mot de passe samba
unix password sync = yes
C'est le maitre (par opposition à contrôleur de domaine secondaire):
domain master = yes
Mouais, je n'ai pas trop saisi le but de la directive suivante: L'OS level si je me souviens bien c'est lorsqu'il y a plusieurs controleur de domaine celui qui aura l'OS le plus eleve sera choisi. Explication de zilozi dans les commentaires... Un peu comme le champs MX dans les DNS quoi
os level = 33
Pour insister sur le fait que c'est le maitre (surtout en cas de conflit):
preferred master = yes
C'est le partage où sera placé le profil de l'user (son "documents and settings" quoi)
logon path = \\%N\profiles\%U
Samba permet de monter directement (sans faire à la main un script batch) le home_dir de l'user unix sur une tête de lecteur. Il aura besoin de placer les scripts dans un partage "netlogon" (plus bas):
logon drive = H:%%% logon home = \\%N\%U
scripts lors de l'ajout d'users ou de machines depuis un pc client:
add user script = /usr/sbin/adduser -g dom_users -c Utilisateur -d /dev/null -s /bin/false '%u'%%% add machine script = /usr/sbin/useradd -g dom_pc -c "%u machine account" -d /dev/null -s /bin/false '%u'%%% add group script = /usr/sbin/groupadd '%g'%%% delete user script = /usr/sbin/userdel -r '%u'%%% delete group script = /usr/sbin/groupdel '%g'%%% delete user from group script = /usr/bin/gpasswd -d '%u' '%g'%%% set primary group script = /usr/sbin/usermod -g '%g' '%u' %%%
En retirant toutes les lignes commentées ça donne:
[global] workgroup = dom_grouik server string = %h dns proxy = no log file = /var/log/samba/log.%m max log size = 1000 syslog = 0 panic action = /usr/share/samba/panic-action %d security = user encrypt passwords = true passdb backend = tdbsam obey pam restrictions = yes unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes domain master = yes os level = 33 preferred master = yes domain logons = yes logon path = \\%N\profiles\%U logon drive = H: logon home = \\%N\%U add user script = /usr/sbin/adduser -g dom_users -c Utilisateur -d /dev/null -s /bin/false '%u' add machine script = /usr/sbin/useradd -g dom_pc -c "%u machine account" -d /dev/null -s /bin/false '%u' add group script = /usr/sbin/groupadd '%g' delete user script = /usr/sbin/userdel -r '%u' delete group script = /usr/sbin/groupdel '%g' delete user from group script = /usr/bin/gpasswd -d '%u' '%g' set primary group script = /usr/sbin/usermod -g '%g' '%u'
Partages
Vu la config au dessus, il faut trois partages: homes netlogon et profiles Suffit de décommenter. Même si je n'aborde pas ici les imprimantes, je laisse les valeurs par défaut
[homes] comment = Home Directories browseable = no read only = no create mask = 0700 directory mask = 0700 valid users = %S [netlogon] comment = Network Logon Service path = /home/samba/netlogon guest ok = yes read only = yes [profiles] comment = Users profiles path = /home/samba/profiles create mask = 0600 directory mask = 0700 writeable = yes create mode = 0700 [printers] comment = All Printers browseable = no path = /var/spool/samba printable = yes guest ok = no read only = yes create mask = 0700 [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = yes read only = yes guest ok = no
Mise en place.
C'est là que j'ai honte, cette partie est quasiment un copier coller de tux-planet (hormis le changement de dossiers, j'ai ajouté un mappage entre les Noms NT des groupes et les groupes unix)
#La première étape consiste à créer le compte administrateur. #le mot de passe SAMBA doit être identique au mot de passe UNIX. smbpasswd -a root #La création des groupes servira plus loin, mais pas dans l'immédiat pour un simple partage de dossier #Création du groupe des administrateurs du domaine groupadd dom_admin #Création du groupe des utilisateurs du domaine groupadd dom_users #Création du groupe des machines groupadd -g 515 dom_pc #Attribuons ensuite les bons RIDs aux trois groupes : net groupmap add rid=515 unixgroup=dom_pc ntgroup="Domain Computers" net groupmap set "Domain Admins" dom_admin net groupmap set "Domain Users" dom_users #creer les dossiers mkdir /home/samba/ mkdir /home/samba/profiles mkdir /home/samba/netlogon cd /home/samba/ chgrp -R dom_users * chmod -R 755 netlogon chmod -R 770 profiles/ #Créer un user: useradd -G dom_users -m -c "utilisateur test" -s /bin/false test #Ajout de l'utilisateur à samba smbpasswd -a test
Vérifiez la configuration avec la commande:
testparmc
Vérifiez le mapping des groupes par la commande:
net groupmap list
Puis lancez samba:
/etc/init.d/samba start
Test sous windows:
Sous Windows XP, c'est passé sans problème.
Pour seven, préalablement. Vous pouvez au choix demander le correctif à microsoft (ils le transmettent par e-mail) http://support.microsoft.com/kb/2171571
Ou à la mano, vous ajoutez les valeurs de registres suivantes
HKLM\System\CCS\Services\LanmanWorkstation\Parameters DWORD DomainCompatibilityMode = 1 DWORD DNSNameResolutionRequired = 0
En quelques screens, l'ajout d'un ordinateur dans le domaine se fait par les propriétés du poste de travail, puis Modification du nom de l'ordinateur. Lors de l'ajout, on utilise un compte administrateur (root) qu'on mettra plus loin administrateur de la machine au passage. Par la suite, il sera possible de s'authentifier sur l'ordinateur à partir de n'importe quel compte du domaine. Les droits sur la machine seront ceux d'un utilisateur standard.
C'est comment un AD Windows?
Je me permet une petite digression, explication de ce qu'est un contrôleur de domaine Windows 2003. Le temps d'aller sur la passerelle avec ma clé ssh et de faire une redirection du port rdp sur le serveur du travail. Je fermerai juste après les ports évidemment. Un active directory, pas obligatoire, mais en général, ce sont tout d'abord des ordinateurs qui sont intégrés dans le domaine.
Ce sont aussi des utilisateurs et des groupes:
Pour lesquels, on peut choisir plein de paramètres, là c'est l'utilisateur accueil: le script batch à exécuter au démarrage (montage de répertoires distants principalement) et le dossier dans lequel sera dupliqué son dossier documents and settings (profils itinérants)
Pour cela, un contrôleur de domaine partage plein de trucs en plus des dossiers à partager aux utilisateurs.
Les scripts .bat à l'ouverture et les GPO par exemple.
Conclusion
C'est pas mal, j'ai réussi à remplacer pas mal de fonctions du win2003 déja. Je ferai surement des ajouts à ce billet si je prends le temps de faire quelques tests (impression, DNS couplé à samba etc...)
Commentaires
Bonjour,
L'OS level si je me souviens bien c'est lorsqu'il y a plusieurs controleur de domaine celui qui aura l'OS le plus eleve sera choisi.
Ensuite pour un controleur de domaine on stock les utilisateurs et ordinateurs dans un annuaire LDAP (OpenLDAP) et pour se faciliter la vie on utilise les smbldap-tools pour inscrire des users et computers.
Pour ton password unix sync tiens regarde ce lien :
http://www.mirabellug.org/docs/samb...
Merci pour ce complément Zilozi.
J'ai ajouté ces précisions au billet
Bonjour,
ce tutoriel a l'air de rassembler tout ce dont j'ai besoin faire mon domaine (je voudrais centraliser les données de mon réseau local pour les personnes le désirant et monter un serveur DLNA en plus).
Je voudrais savoir si sur les postes clients (notamment pour les portables qui ne seront pas toujours utiliser a l’intérieur du domaine) si il est possible d'acceder a ces comptes de maniere "offline" et si il est possible que tout se synchronise lors que l'on se connecte sur la machine?
Merci d'avance pour vos réponses.
Bonjour Geek
Oui, mais à peut être à retester:
Ce que j'ai remarqué, c'est que le windows garde en mémoire les identifiants d'un utilisateur: il peut ouvrir son PC, même en dehors du LAN. Son profil étant copié dans documments and settings ("users" à partir de windows vista) il aura acces à ses documents hors ligne. Ces derniers se synchroniseront une fois qu'il sera à nouveau dans le réseau. La synchro prend en compte la date de modifications des fichiers.
Ce n'est cependant pas le cas d'un compte administrateur du domaine, qui lui doit être connecté au domaine pour ce logguer.
Dans tous les cas c'est surement paramétrable. Si je m'ennuie un peu dimanche, je ferai le test ;)
Salut, Tout d'abord un grand merci pour ton tuto ! il est très clair et très explicite ! Ya juste une chose qui me chiffone : A la fin de la configuration de samba tu donne la commande "testparmc" pour verifier la config. Lorsque je l'exécute j'ai droit à un "commande introuvable". est-ce grave docteur?
Bonjour Chinzu
Je n'ai plus la config en tete, Le billet date un peu, la version actuelle étant la 3.6 si je ne me trompe pas, je crois qu'ils ont modifié le nom de la commande; essaie avec "testparm" sans le c
Parfait la commande fonctionne. Par contre je ne parviens pas à faire rentrer un seven sur mon serveur. J'ai fais la modif des clés de registres mais j'obtiens le message : Impossible de contacter un contrôleur de domaine AD pour le domaine SECOVANET.SECOVA.BE
J'ai deux portable, un avec une machine virtuelle de ma débian 6.0.5 et l'autre avec une machine virtuelle de client 7 pro.
Je précise les pare-feu sont down des deux cotés et j'arrive à pinger des deux cotés
Super tuto, exactement ce dont j'ai besoin.
Cependant j'ai un soucis en joignant le domaine, lorsque je rentre l'user et le pass j'obtiens "le nom réseau spécifier n'est plus disponible". Quelqu'un à déjà eu ce problème ?
je n'arrive pas à télécharger samba!!!
Je n’arrive pas à télécharger samba