SAMBA
jeudi 4 décembre 2008, par
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
Serveur de fichiers en Groupe de Travail (Workgroup)
Fichier /etc/samba/smb.conf :
# 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
On commence par les groupes :
addgroup admin # groupe des administrateurs
addgroup users # groupe des utilisateurs
addgroup machines # groupes des comptes machinespuis 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
...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 :
| Nom | RID |
|---|---|
| Domain Administrator | 500 |
| Domain Guest | 501 |
Groupes globaux intégrés :
| Nom | RID |
|---|---|
| Domain Admins | 512 |
| Domain Users | 513 |
| Domain Guests | 514 |
| Domain Computers | 515 |
Groupes locaux intégrés :
| Nom | RID |
|---|---|
| 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=machinesSi 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 listCela 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) -> admince 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)
Il faut utiliser la commande smbpasswd (-a pour ajouter) :
smbpasswd -a daniel
smbpasswd -a matthieu
smbpasswd -a maelle
smbpasswd -a bastienautant 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 domainevoir 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 : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFIl 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 :-)
/etc/samba/smb.conf
Dépend de votre distribution. Mais généralement :
/etc/init.d/samba {start|stop|restart|status|condrestart} 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=rootCommandes 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 danielArticles 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