Samba avec authentification sur Active Directory
De wikiGite
Sommaire
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 WINBIND :
service winbind stop
redémarrer SAMBA :
service smb restart
démarrer 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"