Samba avec authentification sur Active Directory : Différence entre versions
De wikiGite
(→Modifier /etc/samba/smb.conf) |
(→Pré-requis) |
||
Ligne 3 : | Ligne 3 : | ||
krb5-libs krb5-workstation pam_krb5 samba-client nss | krb5-libs krb5-workstation pam_krb5 samba-client nss | ||
samba et samba-common (qui fournit entre autres winbind) doivent évidemment être installés ! | samba et samba-common (qui fournit entre autres winbind) doivent évidemment être installés ! | ||
+ | |||
+ | Vérifier que samba et winbind sont lancés au démarrage du serveur ! | ||
De plus, penser à synchroniser l'heure du contrôleur de domaine et du serveur linux avec ntp, kerberos est très sensible à ça ! | De plus, penser à synchroniser l'heure du contrôleur de domaine et du serveur linux avec ntp, kerberos est très sensible à ça ! |
Version du 11 avril 2011 à 16:34
Sommaire
Pré-requis
Tout d'abord vérifier 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 !
Vérifier que samba et winbind sont lancés au démarrage du serveur !
De plus, penser à synchroniser l'heure du contrôleur de domaine et du serveur linux avec ntp, kerberos est très sensible à ça !
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 devra s'appeler "DOMAINE_AD+user_AD" en toutes lettres, case sensitive, et le "+" au milieu valid users = @"DOMAINE_AD+groupe1_AD" @"DOMAINE_AD+groupe2_AD" # (pour un utilisateur seul, même syntaxe sans le "@") - (si plusieurs noms, séparer par un espace) 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. Attention, il peut y avoir un message d'erreur si le homedir de l'utilisateur n'a pas été créé avant.
On peut tester le partage à partir du serveur linux par
# smbclient //serveur_linux/partage -k OS=[Unix] Server=[CentOS 5.5] smb: \> put hello_world.txt putting file hello_world.txt as \hello_world.txt (0.0 kb/s) (average nan kb/s) smb: \> quit # ls -l /data/testshare/hello_world.txt -rwxr--r-- 1 utilisateur_AD Util. du domaine 0 2005-07-22 13:37 /data/test/hello_world.txt
Partages
La connexion se fait avec l'utilisateur "DOMAINE_AD+user_AD" (avec le "+" au milieu, puisque c'est ce qu'on a demandé par "winbind separator = +" dans smb.conf)
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" (DOMAINE en majuscule, toujours le "+" au milieu, et le login utilisateur tel qu'il a été créé dans AD). Si on utilise un chemin statique par contre ça ne pose pas de problème, mais ça n'empêche pas de devoir modifier les acls (voir ci-dessous).
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 la partition qui contiendra le partage ("acl" dans les options), puis :
# setfacl -m g:"DOMAINE_AD+groupe_AD":rwx /home/share
NOTES
- on ne peut pas mettre "force user = apache" (par exemple) quand on utilise "%u" dans le path, car Samba remplace tout de suite le nom de l'utilisateur par "apache" et cherche une chemin du type "/home/user/apache" dans ce cas (à moins que ce répertoire existe, évidemment, et qu'on veuille que tout le monde tombe dedans !).
- par contre on peut mettre force group = apache pour forcer les fichiers à se créer avec le groupe "apache"