
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.
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.
En quelques screens







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...)
Derniers commentaires