- WINBIND -

I Description de Winbind

Winbind permet à une machine linux où se situe samba de faire un lien entre elle et un contrôleur primaire Active directory par exemple. C'est à dire que les comptes créés sur le contrôleur primaire seront efficace immédiatement sur la machine linux sans aucune autre intervention.

II Mis en place de Winbind

Pour mettre en place winbind il faut tout d'abord configurer samba qui permet de faire un lien entre windows et linux.

a)Configuration de Samba

La première étape consiste, d'abord, à installer Samba. Pour tester si Samba est déjà installé faire :

rpm -q samba

Si il est installé alors vous aurez une réponse du style qui est la version d'installé:

samba-2.2.7a-7.9.0

Sinon il faudra l'installer pour ça il va falloir télécharger le package de samba(la 2.8 de préférence). Pour l'installation il faut décompresser l'archive dans un dossier puis éxécuter la commande :

./configure --enable-cups --with-smbwrapper --with-dce-dfs --with-smbmount --with-pam --with-pam_smbpass --with-syslog --with-quotas --with-libsmbclient --with-acl-support --with-winbind --with-winbind-auth-challenge

Puis une fois que tout est configuré vous devez compilé et installer samba:

make
make install
make installbin
make installman

Maintenant que l'installation est terminé on va pouvoir configurer samba pour fonctionner avec winbind. Voici un exemple de fichier de configuration de samba:

#======================= Global Settings
[global]
#Emplacement du fichier samba des utilisateurs à lui
smb passwd file = /etc/samba/smbpasswd

#Ordre de résolution de noms, donc là par serveur wins puis par le fichier host
#Car par défaut il commence par le broadcast et étant derrière un routeur celà ne
#marche pas donc il est conseillé d'avoir un serveur Wins
name resolve order = wins host
wins server = 31.1.1.3

# les lignes suivantes sont utiles pour pouvoir changer le mot de passe
# et ajouter des utilisateurs à partir de serveurs windows.A utiliser avec
# "encrypt passwd" et "smb passwd file"
passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
encrypt passwords = yes
passwd program = /usr/bin/passwd %u
add user script = /usr/sbin/useradd -s /bin/false %u
delete user script = /usr/bin/userdel %u

# Support de l'ACL Microsoft
nt acl support = yes

# Séparateur winbind. Avec / les utilisateurs auront la forme
# domaine/nom_d'utilisateur.
#Ligne obligatoire pour le bon fonctionnement de winbind.
winbind separator = /
#Réservation d'identifiant pour les utilisateurs et les groupes qui sont sur le #controleur primaire, car winbind affecte automatiquement des uid et des gid aux
#utilisateurs du domaine qui pourront donc s'identifer sur la machine linux
winbind uid = 10000-20000
winbind gid = 10000-20000

#cette ligne permet juste d'améliorer les performances de samba
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

#Si egale à yes, samba tentera de devenir explorateur principal
#du sous-réseau local.
local master = no

# Fixe le niveau de l'os de samba lors de l'élection de
# l'explorateur local principal.
os level = 50

#Si égale à yes,samba tentera alors de devenir explorateur
# principal de domaine du groupe de travail.
domain master = no

# Samba utilisera le bit de l'explorateur principal favori pour devenir
# explorateur local principale si cette valeur est égale à yes.
preferred master = no

# Définit le groupe netbios de machines auquel
# le serveur appartient ici le nom du domaine.
workgroup = castelginest

#Chaîne de description du serveur samba
server string = lnxdns

#Définit le nom netbios principale du serveur samba, par défaut il prendra le #hostname
netbios name = lnxdns

# Samba fait parité d'un domaine windows
security = domain

# Cette option sert à indiquer le CPD ici le caractère de
# substitution * ordonne à samba de rechercher le CPD lui-meme. Or pour
#optimiser le traitement on indique directement le nom netbios du contrôleur
password server = primaire

#Celà indique à samba d'utiliser les restrictions définit dans le dossier /etc/pam.d/
obey pam restrictions = yes

# winbind use default domain allows you to have winbind return usernames
# in the form user instead of DOMAIN+user for the domain listed in the
# workgroup parameter.
winbind use default domain = yes

# Pour synchroniser automatiquement les mots de passe entre windows et linux
#cette ligne est nécessaire .
unix password sync = yes

#Création d'un partage homes où l'utilisateur qui se connectera aura son propre #dossier, car le %H indique le répertoire de l'utilisateur qui est connecté.
#Pour les utilisateurs de notre domaine c'est du type : #/home/CASTELGINEST/NomUtilisateur
[homes]
writeable = yes
path = %H

[public]
path = /public
writeable = yes

#Dossier où seront tout les profiles utilisateurs
[profiles]
browseable = no
writeable = yes
public = yes
path = /data/samba/profiles

#Dossier de partage propre au groupe d'appartenance de l'utilisateur
[groupes]
browseable = no
writeable = yes
path = /data/samba/groupes

b)Configuration de winbind

1)Le fichier nsswitch.conf

Il suffit juste de rajouter quelques informations pour préciser que pour la gestion des utilisateurs et des groupes on peut utiliser winbind:

passwd: files nisplus winbind
shadow: files nisplus
group: files nisplus winbind

2)Configuration de pam.d

Dans ce dossier ce trouve tout les services ou programme qui peuvent utiliser une identification d'un utilisateur. Par exemple dedans on trouve un fichier smtp et pop où est décrit comment les utilisateurs doivent être identifiés pour pouvoir recevoir et envoyer des mails:

#%PAM-1.0
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth

En fait il suffit pour que celà se fasse par winbind de rajouter déjà dans le dossier pam.d un fichier system-auth-winbind contenant celà:

#%PAM-1.0

auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_winbind.so
auth sufficient /lib/security/pam_unix.so likeauth nullok use_first_pass
auth required /lib/security/pam_deny.so

account sufficient /lib/security/pam_winbind.so
account required /lib/security/pam_unix.so

password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadow
password required /lib/security/pam_deny.so

#cette ligne permet de créer automatiquement le répertoire de
#l'utilisateur lors d'une nouvelle connection
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so

Puis dans chaque fichier où l'on veut qu'il y ait une identification remplacer system-auth par system-auth-winbind comme ceci:

#%PAM-1.0
auth required pam_stack.so service=system-auth-winbind
account required pam_stack.so service=system-auth-winbind

Voilà donc maintenant nous pourrons avec nos comptes sous windows NT envoyer et recevoir des messages.

Il est bien entendu qu'il faut aussi faire celà obligatoirement dans les fichiers /etc/pam.d/samba , /etc/pam.d/login et /etc/pam.d/authconfig .

3)Joindre la machine linux au controleur de domaine

Pour que winbind puisse demander des informations au Controleur primaire windows il faut qu'il soit enregistrer dans Active Directory et qu'il connaisse un compte (login et mot de passe) ayant l'autorisation de récupérer les informations sur celui ci. Pour faire celà il faut tapper la commande suivante:

smbpasswd -j nomdudomaine -r nom_netbios_de_la_machineCPD -U administrateur%mot_de_passe

Si cette opération a bien fonctionné alors vous aurez le résultat:

Joined domain CASTELGINEST.

Vous aurez donc automatiquement un fichier crypté /etc/samba/secrets.tdb qui sera créé avec les informations qu'il a besoin pour récupérer les comptes NT. Mais attention ce fichier n'est pas complètement crypté car le login et le mot de passe apparaisse en clair à un endroit dans le fichier.

3)Lancement des services nécessaires plus quelques test.

Lancement des services samba qui composé des services smbd et nmbd:

service smb start

Lancement du service winbind :

service winbind start

Il ne nous reste plus qu'a tester si celà marche, pour celà on va tester si il récupère bien les comptes utilisateurs:

[root@progress root]# wbinfo -u
adj1
adj2
adj3
Administrator
aida
bb
comptable1
conseiller1
conseiller2
conseiller3
conseiller4
conseiller5
franck
greg
Guest
IUSR_PRIMAIRE
IWAM_PRIMAIRE
jc
krbtgt
maire1
manu
r.c
ruellan
secretaire1
sgAss
sgCfb
sgTeev
SQLDebugger
sqlserver
tata
test
toto
TsInternetUser

Ou on peut tapper:

[root@progress root]# getent passwd
#Là ce sont les comptes linux
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
rpm:x:37:37::/var/lib/rpm:/bin/bash
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin

#Et là apparaisse les comptes NT, car l'on voit les uid (de 10000 à 20000) que winbind
# a créé
adj1:x:10000:10000:adj1:/home/CASTELGINEST/adj1:/bin/false
adj2:x:10001:10000:adj2:/home/CASTELGINEST/adj2:/bin/false
adj3:x:10002:10000:adj3:/home/CASTELGINEST/adj3:/bin/false
Administrator:x:10003:10000::/home/CASTELGINEST/administrator:/bin/false
aida:x:10032:10000:aida:/home/CASTELGINEST/aida:/bin/false
bb:x:10034:10000::/home/CASTELGINEST/bb:/bin/false
comptable1:x:10004:10000:comptable1:/home/CASTELGINEST/comptable1:/bin/false
conseiller1:x:10005:10000:conseiller1:/home/CASTELGINEST/conseiller1:/bin/false
conseiller2:x:10006:10000:conseiller2:/home/CASTELGINEST/conseiller2:/bin/false
conseiller3:x:10007:10000:conseiller3:/home/CASTELGINEST/conseiller3:/bin/false
conseiller4:x:10008:10000:conseiller4:/home/CASTELGINEST/conseiller4:/bin/false
conseiller5:x:10009:10000:conseiller5:/home/CASTELGINEST/conseiller5:/bin/false
franck:x:10010:10000::/home/CASTELGINEST/franck:/bin/false
greg:x:10011:10000:greg lack:/home/CASTELGINEST/greg:/bin/false
Guest:x:10012:10000::/home/CASTELGINEST/guest:/bin/false
IUSR_PRIMAIRE:x:10013:10000:Internet Guest Account:/home/CASTELGINEST/iusr_primaire:/bin/false
IWAM_PRIMAIRE:x:10014:10000:Launch IIS Process Account:/home/CASTELGINEST/iwam_primaire:/bin/false
jc:x:10015:10000:jean-charles jc. gaufroy:/home/CASTELGINEST/jc:/bin/false
krbtgt:x:10016:10000::/home/CASTELGINEST/krbtgt:/bin/false
maire1:x:10017:10000:maire1:/home/CASTELGINEST/maire1:/bin/false
manu:x:10018:10000:manu:/home/CASTELGINEST/manu:/bin/false
r.c:x:10019:10000:Romain Carillon:/home/CASTELGINEST/r.c:/bin/false
ruellan:x:10033:10000:ruellan:/home/CASTELGINEST/ruellan:/bin/false
secretaire1:x:10020:10000:secretaire1:/home/CASTELGINEST/secretaire1:/bin/false
sgAss:x:10021:10000:sgAss:/home/CASTELGINEST/sgass:/bin/false
sgCfb:x:10022:10000:sgCfb:/home/CASTELGINEST/sgcfb:/bin/false
sgTeev:x:10023:10000:sgTeev:/home/CASTELGINEST/sgteev:/bin/false
SQLDebugger:x:10024:10000:SQLDebugger:/home/CASTELGINEST/sqldebugger:/bin/false
sqlserver:x:10025:10000:SQL SERVER:/home/CASTELGINEST/sqlserver:/bin/false
tata:x:10028:10000:tata:/home/CASTELGINEST/tata:/bin/false
test:x:10026:10000:test:/home/CASTELGINEST/test:/bin/false
toto:x:10030:10000:toto:/home/CASTELGINEST/toto:/bin/false
TsInternetUser:x:10027:10000:TsInternetUser:/home/CASTELGINEST/tsinternetuser:/bin/false

Donc par cette commande on peut voir où se trouve les dossiers des utilisateurs ainsi que les uid des utilisateurs et le shell aussi utilisé. Pour voir pour les groupes créé il suffit de tapper : getent group.

Maintenant on va tester si winbind arrive à identifier un utilisateur sur une machine avec le login et le mot de passe NT, car ce n'ai pas parce que l'on récupère les utilisateurs que l'identification fonctionne. Pour celà il suffit d'éxécuter la commande:

[root@progress root]# wbinfo -a administrator%mot_de_passe
plaintext password authentication succeeded

Si l'on obtient ce résultat c'est que winbind est prêt à fonctionner.

 

Menu