Outils personnels

Samba avec authentification sur Active Directory

De wikiGite

Révision datée du 14 janvier 2011 à 16:10 par Frank (discussion | contributions) (PAM)

Pré-requis

Tout d'abord vérifiez si les paquets suivants sont installés ou non:

krb5-libs krb5-workstation pam_krb5 samba-client nss

samba et samba-common (qui fournit entre autres winbind) doivent évidemment être installés !

Kerberos

Configurer /etc/krb5.conf

[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log

[libdefaults]
default_realm = DOMAINE_AD.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
DOMAINE_AD.COM = {
   kdc = server.domaine_ad.com
   admin_server = server.domaine_ad.com
   default_domain = domaine_ad.com
}

[domain_realm]
domaine_ad.com = DOMAINE_AD.COM
.domaine_ad.com = DOMAINE_AD.COM

# Optionnel
# [appdefaults]
# pam = {
#    debug = false
#    ticket_lifetime = 36000
#    renew_lifetime = 36000
#    forwardable = true
#    krb4_convert = false
# }

Valider la configuration de kerberos

kinit user_AD

ou user_AD est un utilisateur existant sur Active Directory. S'il n'y a pas de message d'erreur, vérifier le ticket obtenu par

klist

puis le supprimer par

kdestroy

Samba

Modifier /etc/samba/smb.conf

#GLOBAL PARAMETERS
[global]
   workgroup = DOMAINE_AD
   realm = DOMAINE_AD.COM
   preferred master = no
   server string = Linux Test Machine
   security = ADS
   encrypt passwords = yes
   log level = 3
   log file = /var/log/samba/%m
   max log size = 50
   printcap name = cups
   printing = cups
   winbind enum users = Yes
   winbind enum groups = Yes
   winbind use default domain = Yes
   winbind nested groups = Yes
   winbind separator = +
   idmap uid = 600-20000
   idmap gid = 600-20000
   ;template primary group = "Domain Users"
   template shell = /bin/bash
[partage]
   comment = Home Directories
   path = /home/users/%u # le répertoire partagé devra s'appeler "DOMAINE_AD+user_AD" en toutes lettres
   valid users = @"DOMAINE_AD+groupe_AD" # (pour un utilisateur seul, même syntaxe sans le "@")
   read only = No
   browseable = No
# Si on utilise "%u" dans le "path", on ne peut pas forcer l'utilisateur par "force user", seulement le groupe
   force group = apache

Valider la syntaxe de smb.conf par

testparm

Joindre la machine au domaine AD

net ads join -U administrateur

doit demander le mot de passe administrateur AD et répondre au final

Joined 'SERVER_LINUX' to realm 'DOMAINE_AD'

Vérifier l'accès à AD

Lister les comptes et les groupes :

# wbinfo -u # (liste des utilisateurs)
# wbinfo -g # (liste des groupes)

PAM

Modifier /etc/nsswitch.conf

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

Vérifier que les librairies suivantes existent dans /lib :

libnss_winbind.so
libnss_winbind.so.2 -> libnss_winbind.so
libnss_wins.so
libnss_wins.so.2 -> libnss_wins.so

Modifier /etc/pam.d/system-auth

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required /lib/security/$ISA/pam_env.so
auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok
auth sufficient /lib/security/$ISA/pam_winbind.so use_first_pass
auth required /lib/security/$ISA/pam_deny.so

account required /lib/security/$ISA/pam_unix.so
account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet
account sufficient /lib/security/$ISA/pam_winbind.so use_first_pass
account required /lib/security/$ISA/pam_permit.so

password requisite /lib/security/$ISA/pam_cracklib.so retry=3 type=
password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow
password sufficient /lib/security/$ISA/pam_winbind.so use_first_pass
password required /lib/security/$ISA/pam_deny.so

session required /lib/security/$ISA/pam_limits.so
session required /lib/security/$ISA/pam_unix.so
session required /lib/security/$ISA/pam_winbind.so use_first_pass

Relancer les services

stopper service WINBIND :

service winbind stop

redemarrer service SAMBA :

service smb restart

démarrer service WINBIND :

service winbind start

Authentification et droits

A ce moment, on doit pouvoir se connecter (en console ou ssh) au serveur linux avec un utilisateur Active Directory. Si le système reconnait ces utilisateurs, Samba doit les reconnaitre également.

Partages

La connexion se fait avec l'utilisateur "DOMAINE_AD+user_AD", si on utilise le homedir de l'utilisateur comme partage (path = /home/%u) il faut que ce homedir s'appelle en toutes lettres "DOMAINE_AD+user_AD" (avec le "+" au milieu).

Il faut ensuite ajouter le groupe du domaine aux droits du partage, sinon Samba autorisera l'accès, mais pas le système de fichier !

Activer les acl dans /etc/fstab pour une partition ("acl" dans les options), puis :

# setfacl -m g:"DOMAINE_AD+groupe_AD":rwx /home/share


NOTE - on ne peut pas mettre "force user = apache" quand on utilise "%u" dans le path, car il remplace tout de suite le nom de l'utilisateur par "apache" et cherche une chemin finissant par "/apache" dans ce cas

    - par contre on peut mettre force group = apache pour forcer les fichiers à se créer avec le groupe "apache"