ADeLLA.org ADeLLA.org

Accueil du site > Documentation > Réseau > Samba en Contrôleur de Domaine

SAMBA

Samba en Contrôleur de Domaine

jeudi 4 décembre 2008, par daniel


Objectif

Nous voulons configurer un Contrôleur de Domaine Principal (PDC) avec SAMBA. C’est à dire que l’authentification des utilisateurs et des machines appartenant au domaine seront réalisées sur le contrôleur.

Les utilisateurs (sur NT2000, XP et Vista) auront leurs profils enregistrés sur le contrôleur. Un script sera exécuté sur la machine cliente à l’ouverture de session.

Nous créerons trois groupes différents :
- users pour les utilisateurs du domaine
- admin pour les administrateurs du domaine
- machines pour les machines du domaine

Prérequis

- Serveur de fichiers en Groupe de Travail (Workgroup)

Fichier de configuration

Fichier /etc/samba/smb.conf :

GZ - 1.9 ko
smb.conf.tar.gz
Fichier de configuration de Samba
# fichier de configuration Samba : /etc/samba/smb.conf
# Controleur de Domaine Principal (PDC)
# Daniel Rocher - 03/12/2008
# daniel POINT rocher CHEZ adella POINT org

[global]

#nom du domaine
workgroup = ADELLA

#nom de la machine (si absent, utilise hostname)
netbios name = PRINCIPAL
server string = %h server Samba %v as PDC

# Activation de WINS
# un moyen simple pour resoudre les noms netbios et se passer de serveur DNS
wins support = yes
dns proxy = no

# ordre de recherche pour la resolution des noms Netbios
name resolve order = lmhosts host wins bcast

# interfaces préférées
interfaces = eth0 192.168.2.0/24 lo

# n'écouter que les interfaces définient dans 'interfaces'
bind interfaces only = true



# Debugging/log
log file = /var/log/samba.log
max log size = 1000
# log level. Utiliser un chiffre + grand pour avoir plus de logs
syslog = 4

# script à executer lors d'un problème sur Samba
panic action = /usr/share/samba/panic-action %d

# sécurité au niveau utilisateur
security = user

# crypter le mot de passe
encrypt passwords = true

# base de données des utilisateurs, groupes et mots de passe
passdb backend = tdbsam
# valeurs possibles:
# tdbsam: enregistré dans un fichier passdb.tdb
# smbpasswd: enregistré dans un fichier smbpasswd
# ldapsam: sur un serveur LDAP


# Synchronisation des mots de passe samba avec les mots de passe Linux.
# Ajouter ces options si l'on souhaite que l'utilisateur connecté sur un domaine
# puisse changer son mdp
unix password sync = yes
pam password change = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .


# Que faire en cas d'echec d'authentification
map to guest = bad user

# Controleur de domaine principal
domain master = yes
domain logons = yes

# chemin du profil NT (pour profil itinérant)
logon path = \\%N\profiles\%U

# création du montage H: (répertoire perso) pour tous les utilisateurs
logon drive = H:
logon home = \\%N\%U

# pour executer un script sur la machine cliente à l'ouverture de session
# pour un utilisateur particulier
# logon script = %u.bat 
# ou bien pour tous les utilisateurs
logon script = script.bat

# Pour manipuler le controleur de domaine à distance:
# (ajout d'un utilisateur, d'un groupe, joindre le domaine,...)
add machine script = /usr/sbin/useradd -g machines -c 'SMB Machine Account' -d /dev/null -s /bin/false '%u'
add user script = /usr/sbin/useradd -g users -c 'SMB Users Account' -d /dev/null -s /bin/false '%u'
add user to group script = /usr/bin/gpasswd -a '%u' '%g'
delete user from group script = /usr/bin/gpasswd -d '%u' '%g'
delete user script = /usr/sbin/userdel -r '%u'
add group script = /usr/sbin/groupadd '%g'
delete group script = /usr/sbin/groupdel '%g'
set primary group script = /usr/sbin/usermod -g '%g' '%u'


# Partager les imprimantes présentent dans CUPS
printing = cups
printcap name = cups

# pour de meilleures performances
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

# Répertoires personnels des utilisateurs
[homes]
   comment = Home Directories
   read only = no
   browseable = no
   create mask = 0700
   directory mask = 0700
   valid users = %S

# voir 'logon script'
[netlogon]
   comment = Network Logon Service
   path = /home/samba/netlogon
   guest ok = yes
   browseable = no
   read only = yes


# pour profils itinérants (voir 'logon path')
[profiles]
   comment = Users profiles
   path = /home/samba/profiles
   guest ok = no
   browseable = no
   create mask = 0600
   directory mask = 0700

# imprimantes
[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   create mask = 0700

# Partage des pilotes d'imprimantes (windows)
[print$]
  comment = Printer Drivers
  path = /var/lib/samba/printers

# partage de la documentation
[documents]
   comment = Documentation
   path = /mnt/serveur/documentation
   valid users = @users,@admin
   read list = @users
   write list = @admin
   read only = no
   create mask = 0664
   directory mask = 0775
   wide links = yes

# partage des distributions
[distrib]
   comment = Distributions
   path = /mnt/serveur/distrib
   valid users = @users,@admin
   read list = @users
   write list = @admin
   read only = no
   create mask = 0664
   directory mask = 0775
   wide links = no

# partage public
[public]
   path = /mnt/serveur/Public
   guest ok = yes
   read only = no

Création des utilisateurs et groupes Unix :

On commence par les groupes :

addgroup admin # groupe des administrateurs
addgroup users # groupe des utilisateurs
addgroup machines # groupes des comptes machines

puis on rajoute les utilisateurs dans les bons groupes :

usermod -a -G admin,users daniel
usermod -a -G users bastien
usermod -a -G users maelle
usermod -a -G users matthieu
...

Corréler les groupes Unix avec les groupes NT

Il faut corréler les groupes Unix avec les groupes windows, les numéros de RID sont important, voici les "well-known RIDs" :

Utilisateurs locaux intégrés :

NomRID
Domain Administrator 500
Domain Guest 501

Groupes globaux intégrés :

NomRID
Domain Admins 512
Domain Users 513
Domain Guests 514
Domain Computers 515

Groupes locaux intégrés :

NomRID
Builtin Administrators S-1-5-32-544
Builtin users S-1-5-32-545
Builtin Guests S-1-5-32-546
Builtin Account Operators S-1-5-32-548
Builtin Server Operators S-1-5-32-549
Builtin Print Operators S-1-5-32-550
Builtin Backup Operators S-1-5-32-551

Ajouter les corrélations dans la table groupmap :

net groupmap add rid=512 ntgroup="Administrateurs du domaine" unixgroup=admin
net groupmap add rid=513 ntgroup="Utilisateurs du domaine" unixgroup=users
net groupmap add rid=514 ntgroup="Invites du domaine" unixgroup=nogroup
net groupmap add rid=515 ntgroup="Machines du domaine" unixgroup=machines

Si l’on souhaite effacer une entrée dans la table groupmap :

net groupmap delete ntgroup="Users"

Voir le contenu de la table groupmap :

net groupmap list

Cela affiche les groupes corrélés ainsi que le SID du groupe (Security IDentifier), exemple :

Administrateurs du domaine (S-1-5-87-3045651741-71783781-1556715626-512) -> admin

ce qui veut dire :
- ntgroup : Administrateurs du domaine
- unixgroup : admin
- ID de domaine : S-1-5-87-3045651741-71783781-1556715626
- RID (identifiant relatif) : 512 (administateurs de domaine)

Ajouter des utilisateurs Unix dans notre domaine :

Il faut utiliser la commande smbpasswd (-a pour ajouter) :

smbpasswd -a daniel
smbpasswd -a matthieu
smbpasswd -a maelle
smbpasswd -a bastien

autant de fois que d’utilisateurs.

Il est maintenant possible de vérifier que les utilisateurs sont bien connus du domaine et qu’ils appartiennent bien aux bons groupes :

net user INFO daniel
  Utilisateurs du domaine
  Administrateurs du domaine

net user INFO matthieu
  Utilisateurs du domaine

voir aussi la commande pdbedit :

pdbedit -v daniel
Unix username:        daniel
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-3045171741-71748051-1556711026-3000
Primary Group SID:    S-1-5-21-3045171741-71748051-1556711026-513
Full Name:            Daniel Rocher,,,
Home Directory:       \\principal\daniel
HomeDir Drive:        H:
Logon Script:         script.bat
Profile Path:         \\principal\profile\daniel
Domain:               ADELLA
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    mer, 03 déc 2008 14:09:58 CET
Password can change:  mer, 03 déc 2008 14:09:58 CET
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Ajout d’une station de travail :

Il faut que les stations de travail soient connues du contrôleur de domaine pour pouvoir se connecter. Il faut donc joindre le domaine, un compte machine sera automatiquement créé sur notre domaine (groupe unix -> machines).

Si la jonction du domaine échoue avec XP, modifier les clés suivantes dans la base de registre de Windows (regedit.exe) :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\netlogon\parameters "RequireSignOrSeal"=dword:00000000
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System "CompatibleRUPSecurity"=dword:00000001

- Si vous avez le message suivant lorsque vous voulez joindre le domaine :
"Plusieurs connexions à un serveur ou à une ressource partagée par le même utilisateur, en utilisant plus d’un nom utilisateur, ne sont pas autorisées"

Ouvrir une invite de commande (cmd.exe) et taper :

net use * /DELETE

Joindre notre domaine:
À partir du client NT, clic droit sur poste de travail/propriétés, onglet Noms de l’ordinateur/modifier :

Il est nécessaire de s’authentifier avec un compte Administrateur de domaine valide sur notre domaine :

Et voilà notre Contrôleur de domaine opérationnel :-)

Fichiers de configuration :

- /etc/samba/smb.conf

Service :

Dépend de votre distribution. Mais généralement :

/etc/init.d/samba {start|stop|restart|status|condrestart}

Commandes :

Pour toutes les commandes, ne pas hésiter à lire les pages de manuels.

Commandes Samba : version 2 et supérieure

- smbstatus Voir les connexions en cours ( voir SAMBA - Visualisation des ressources : Application QtSmbstatus)
- smbpasswd Modifier/rajouter le mot de passe d’un utilisateur samba
- testparm Vérifier la syntaxe d’un fichier de configuration
- smbclient Client pour accéder à des ressources
Accéder a des ressources SMB/CIFS. smbclient permet de télécharger des fichiers à partir d’un serveur samba ou d’en déposer.
Il permet également de lister les ressources disponibles :

smbclient -L 192.168.2.1 -U root
  Password:
  Domain=[ADELLA] OS=[Unix] Server=[Samba 3.0.2]

       Sharename      Type      Comment
       ---------      ----      -------
       print$         Disk
       public         Disk      Public
       HPDeskJet890C  Printer   HP DeskJet 890C

       Server               Comment
       ---------            -------
       PRINCIPAL            Samba Server 3.0.2 as PDC

       Workgroup            Master
       ---------            -------
       ADELLA               PRINCIPAL

- nmblookup Résoudre nom de machine <-> adresse IP
- smbmount Monte un système de fichier samba

smbmount //192.168.1.21/backup /mnt/backup -o -username=root
mount //192.168.1.21/backup /mnt/backup -t cifs -o -username=root

Commandes Samba : à partir de la version 3
commandes net :
- net help : Affiche toutes les commandes disponibles
- net send : Envoyer un "popupwindows"
- net use : Utiliser un partage
- net time : Voir ou modifier l’heure
- net lookup : résolution de nom Netbios
- net user : gérer les utilisateurs NT
- net group : gérer les groupes NT
- net groupmap : ’mapper’ les groupes Unix avec les groupes NT
- net join : Joindre un domaine
- ...

- net rpc help : Affiche toutes les commandes RPC disponibles
- net rpc info : Voir les informations du domaine
- net rpc join : Joindre un domaine
- net rpc user : Ajouter, effacer ou lister des utilisateurs
- net rpc group : Lister des groupes
- net rpc share : Ajouter, effacer ou lister des partages
- net rpc file : Voir les fichiers ouverts
- ...

- net ads help : Affiche toutes les commandes ADS (Active Directory) disponibles
- ...

- pdbedit : Gestion de la base de données SAM
Exemples :
Visualiser les utilisateurs présents dans la base SAM :

pdbedit -L

Visualiser un utilisateur particulier :

pdbedit -v daniel

Articles connexes :
- Serveur de fichiers en Groupe de Travail (Workgroup)
- Gestion des ACLs (Access Control Lists - Listes de Contrôle d’Accès)
- SAMBA - Visualisation des ressources : Application QtSmbstatus


04/12/2008

Répondre à cet article

12 Messages de forum

  • Samba en Contrôleur de Domaine 15 avril 2006 01:34, par insomniak

    Bonjour,

    Tout d’abord je tiens à vous remercier pour ce fabuleux tuto ! très clairement expliqué, nickel chrome quoi. C’est le seul que j’ai pu trouver étant assez clair pour commencer un PDC sous linux...

    Par contre, j’ai une question assez importante concernant le fonctionnement de celui ci :

    J’utilise Ubuntu et je me connecte au domaine avec un XP. Je tombe sur un probleme au niveau des comptes utilisateurs "machines". En effet, je suis obligé d’utiliser la methode numero 2 pour me connecter au domaine car la premiere avec le script ne fonctionne pas chez moi. Ensuite, lorsque ma machine en XP est sur le domaine, je ne peux rien faire car les politiques de sécurité prises en compte sont celles de la machine et non celles de l’utilisateur. Or si je souhaite éditer les politiques du compte machine (via l’interface graphique proposée, car je ne connais pas encore assez bien l’archi linux pour aller bidouiller les fichiers de conf), comme le nom de machine possède un $ il m’envoie bouler et me dit que c’est un caractere interdit dans un nom d’utilisateur. Donc en gros je ne peux pas editer mes politique de securité de la machine et donc je ne peux rien faire sur celle ci :(

    Je souhaitais donc savoir s’il y avait un moyen quelconque pour palier à ce probleme SVP ?

    Merci d’avance Insomniak

    Répondre à ce message

  • Samba en Contrôleur de Domaine 19 août 2006 04:40, par pape521

    pas de commentaire je viens de m’inscrire juste pour te dire mercie car ton travaille merite des encouragement pour ton tmp et ta connaissance

    Répondre à ce message

  • Samba en Contrôleur de Domaine 23 août 2007 14:40, par guesniet

    Bonjour, et, merci beaucoup pour ce tuto. Pour un novice comme moi, c’est ce qu’il fallait. Mais, il reste un point que je n’arrives pas à éclaircir :

    Mes utilisateurs ont des profils itinérants. Les comptes sont sur Samba. Les machines en XP SP2

    Je n’arrive pas à affecter un user.domaine à un groupe.local J’ai besoin que certains utilisateurs soient administrateur de leur machine pour faire fonctionner des applications spécifiques. Or, les comptes du domaine ne permettent pas de faire tourner ces applications. Pourriez vous, si vous en avez la connaissance, m’indiquer comment faire pour joindre User.domaine à groupe.local ?

    Merci beaucoup, et, bonne journée à tous. Thomas

    Répondre à ce message

    • Samba en Contrôleur de Domaine 25 août 2007 13:07, par daniel

      Bonjour,

      Je ne suis pas certain de tout avoir compris, tu utilises Samba comme serveur d’applications, c’est bien ça ?

      Est-ce que la mise en oeuvre des ACL répondrait à ton besoin : http://adella.org/spip/spip.php?art...

      http://fr.wikipedia.org/wiki/Access...

      Bon courage et tiens nous au courant.

      Daniel

      Répondre à ce message

      • Samba en Contrôleur de Domaine 8 mai 2009 01:14, par baba

        Bonjour,

        Un très bon document, je n ai pas trouvé mieux pour installer et configurer Samba. En tout cas ça mérite de ma part beaucoup d’encouragements.

        Cependant il est à noter que je n ai vu sur cette doc le service nmb : En ce qui me concerne je n ai pas pu joindre un client Windows XP PRO sans avoir eu à lancer sur le Serveur Samba le service nmb qui permet de parcourir le réseau. Est ce normal ?

        BABA

        Répondre à ce message

        • Samba en Contrôleur de Domaine 8 mai 2009 11:43, par daniel

          Merci pour les encouragements, ça fait toujours plaisir. :-)

          En ce qui concerne le daemon nmbd, sur certaines distributions (notamment debian/ubuntu), il est démarré par le script /etc/init.d/samba en même temps que le daemon smbd.

          Sur d’autres, tel que SuSE me semble t’il, il y a un script de démarrage par daemon.

          Bonne continuation et @++

          Répondre à ce message

          • Samba en Contrôleur de Domaine 7 février 10:58, par newtech83

            Bonjour

            Merci pour le tuto . je viens de l’essayer et je suis stupefais par la force de linux en même temps j’ai des questions à poser pour mon cas. Tout d’abord dans mon réseau j’ai 1 machine unix qui se connecte en wifi. 7 laptops sous xp, vista , W7 et 8 desktops sous xp

            1) Dois je utiliser les noms netbios pour la création des machines ? usermod -a -G machines pc1 2)Les users crée doivent être similaire à celle de la session windows ? 3) Pour le partage je voudrais savoir comment je peux partager une partition avec des permissions dans certains répertoires en lecture ou écriture et cela pour tous les utilisateurs de mon réseau 4) Mon serveur fais office de serveur DHCP donc je voudrai savoir si on peux déconnecter un user connecté sur le serveur

            Mes questions peut être paraitrait simple pour vous mais flou pour moi car je suis débutant en administration linux

            Cordialement

            Répondre à ce message

            • Samba en Contrôleur de Domaine 7 février 21:36, par daniel

              Bonsoir,

              1/ Il ne faut pas rajouter ces machines avec la commande usermod. Vous devez joindre le domaine comme expliqué ci dessus (clic droit sur poste de travail/propriétés, onglet Noms de l’ordinateur/modifie ...).

              2/ Non, pas forcément. Si vous mettez le même nom, ce sera deux utilisateurs de toute façon différents. un qui permettra de se connecter localement sur la machine et l’autre qui permettra de se connecter sur le domaine. Vous pouvez, si vous le souhaitez, ne créer aucun compte sur la machine. Pour se connecter sur un domaine NT, il faut indiquer que l’on se connecte dans le domaine (champ "se connecter à ..." à l’ouverture de session). regarde par exemple cette copie d’écran : http://futureshare.lip6.fr/images/X...

              3/ La question n’est pas claire. On ne partage pas des partitions, juste des répertoires ou des imprimantes.

              4/ Peut-être le logiciel suivant répondrait à ton besoin : http://qtsmbstatus.free.fr/

              Cordialement.

              Répondre à ce message

              • Samba en Contrôleur de Domaine 12 février 18:20, par newtech83

                Bonsoir

                Merci pour les reponses. Je suis en teste avec votre solution . Mon problème est que dans mon ancienne config les pc du réseau était en poste à poste et j’avais partager le disque d’un des pc pour que tou les utilisateur du reseau puisse acceder. Mais aujourd’hui les fichiers sont sensible et tou le monde copie tout sur le disque donc la partition que j’avais partagé ; donc je veux garder toujours une config semblable mais avec des restrictions. C’est à dire sur le disque certains auront acces à certains répertoire du disk en lecture et ecriture, d’autre en lecture simple et d’autre auront acces à tout le disque. Je voudrai savoir si cette configuration est possible avec le controleur de domaine

                Répondre à ce message

                • Samba en Contrôleur de Domaine 12 février 19:09, par daniel

                  Regardez les exemples fournis ci dessus. vous pouvez autoriser interdire qui vous voulez.

                  Exemple, autoriser le groupe admin et l’utilisateur user1 en écriture : write list = @admin, user1

                  (pour désigner un groupe, il faut utiliser le caractère @ suivie du nom du groupe)

                  Autoriser le groupe users et l’utilisateur user2 en lecture read list = @users, user2

                  N’autoriser que les groupes users et admin à utiliser le partage (tous les autres seront rejetés) : valid users = @users,@admin

                  Ce ne sont que des exemples.

                  Répondre à ce message

                  • Samba en Contrôleur de Domaine 16 février 16:51, par newtech83

                    Merci

                    Qu’en est t’il du script bat qui doit s’exécuter sur les machines ? Je n’arrive pas paramétrer cela . Car le profile est perdu à chaque redémarrage des machines .

                    Répondre à ce message


Suivre la vie du site | Valid HTML 4.01! | Valid CSS! | Plan du site | Espace privé | SPIP