Intégration GNU/Linux dans un domaine Active Directory

FIXME commande en vrac à mettre en forme mais surtout tester la totalité des impacts d'une intégration dans l'AD sur les comptes locaux, les plages d'ID utilisées…

FIXME étudier les solutions commerciales ou non qui sont spécialisées sur l'intégration de machines Linux au sein de l'AD.

Pré-requis

[root@srv-linux ~]# hostname -s
srv-linux
[root@srv-linux ~]# hostname -f
srv-linux.example.local
[root@srv-linux ~]# vi /etc/hosts

[root@srv-linux ~]# chkconfig --level 345 smb on
[root@srv-linux ~]# chkconfig --level 345 winbind on

[root@srv-linux ~]# chkconfig --list smb
smb             0:arrêt 1:arrêt 2:arrêt 3:marche        4:marche        5:marche        6:arrêt
[root@srv-linux ~]# chkconfig --list winbind
winbind         0:arrêt 1:arrêt 2:arrêt 3:marche        4:marche        5:marche        6:arrêt


[root@srv-linux ~]# cat /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 = EXAMPLE.LOCAL
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 forwardable = yes

[realms]
 EXAMPLE.LOCAL = {
  kdc = srv-pdc1.example.local:88
  kdc = srv-pdc2.example.local:88
  #admin_server = srv-pdc1.example.local:749
  default_domain = example.local
 }

[domain_realm]
 .example.local = EXAMPLE.LOCAL
 example.local = EXAMPLE.LOCAL

[kdc]
 profile = /var/kerberos/krb5kdc/kdc.conf

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

[root@srv-linux ~]# kinit admin-dom
Password for admin-dom@EXAMPLE.LOCAL:

[root@srv-linux ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin-dom@EXAMPLE.LOCAL

Valid starting     Expires            Service principal
07/08/09 13:57:19  07/08/09 23:57:25  krbtgt/EXAMPLE.LOCAL@EXAMPLE.LOCAL
        renew until 07/09/09 13:57:19


Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

[root@srv-linux ~]# cat /etc/nsswitch.conf | grep winbind
passwd:     files winbind
shadow:     files winbind
group:      files winbind

[root@srv-linux ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

[root@srv-linux ~]# cat /etc/samba/smb.conf
[global]
        workgroup = EXAMPLE
        realm = EXAMPLE.LOCAL
        server string = serveur infrastructure srv-linux
        security = ADS
        allow trusted domains = No
        password server = srv-pdc1.example.local
        username map = /etc/samba/smbusers
        idmap backend = rid:example=10000-20000
        idmap uid = 10000-20000
        idmap gid = 10000-20000
        winbind separator = /
        winbind cache time = 60
        winbind enum users = Yes
        winbind enum groups = Yes
        cups options = raw

[root$]
        path = /
        valid users = "@EXAMPLE/admins du domaine"
        admin users = "@EXAMPLE/admins du domaine"
        write list = "@EXAMPLE/admins du domaine"
        read only = No
        browseable = No

[tmp]
        path = /tmp
        valid users = "@EXAMPLE/admins du domaine"
        read only = No

[root@srv-linux ~]#net join ads -U admin-dom 

[root@srv-linux ~]# service smb restart
[root@srv-linux ~]# service winbind restart

Tests

root@srv-linux tmp]# smbstatus

Quelques commandes pour vérifier que tout fonctionne

Remarque : Avant de saisir les commandes suivantes, il faut vérifier que le serveur Samba est correctement ajouté dans la liste des serveurs du « gestionnaire de serveurs » du contrôleur de domaine Windows. Si ce n’est pas le cas, il faut peut-être attendre quelques minutes pour que la mise à jour se fasse.

La commande suivante doit donner la liste des utilisateurs du domaine.

wbinfo -u

Celle-ci la liste des groupes du domaine.

wbinfo -g

Celle-ci permet de vérifier que les utilisateurs du domaine sont ajoutés à la liste des utilisateurs du serveur Linux avec les bons uid.

getent passwd

La même chose avec les groupes d’utilisateurs.

getent group

Cette commande permet de vérifier qu’un utilisateur particulier est correctement reconnu.

wbinfo -a MonDomaine/tony%LeMotDePasse