Table des matières

, , , , ,

Comment intégrer une machine Ubuntu dans un domaine NT Samba ?

Beaucoup de vieux réseaux gérés par un contrôleur de domaine NT4 ont été remplacés à moindre coût par des serveurs avec Samba paramétré en PDC. Ainsi, les utilisateurs des différentes versions de MS Windows (98 à XP) peuvent continuer à s'authentifier et partager des ressources. Mais si vous désirez également remplacer ou intégrer des machines équipées d'Ubuntu (K/X/Ed/Ubuntu compris) il serait intéressant qu'elles aient accès au même réseau et service.

Si c'est la connexion à un domaine Microsoft Active Directory qui vous intéresse reportez vous au tutoriel « Comment ajouter une machine Ubuntu dans un domaine Microsoft Active Directory ? ».

Si vous avez besoin de mettre en place un contrôleur de domaine Active Directory, Samba4 offre cette possibilité et plus encore !

Installation

Pour pouvoir intégrer un PC Ubuntu à un domaine Samba, il vous faut installer le paquet winbind seul. Vous n'avez pas besoin du serveur Samba, seul le client Samba installé par défaut avec votre Ubuntu suffit. Pour accéder aux partages SMB de manière automatique, il faut utiliser la bibliothèque libpam-mount et cifs-utils. Vous avez donc à installer les paquets winbind libpam-mount cifs-utils sur la machine à joindre et non sur le serveur PDC Samba.

Configuration

Plusieurs fichiers doivent être modifiés pour que l'authentification se fasse grâce au domaine.

nsswitch.conf

Le fichier « /etc/nsswitch.conf » est le fichier de configuration des bases de données systèmes et des services de noms. C'est à lui que l'on va dire d'utiliser Winbind pour trouver les noms d'utilisateurs et groupes rattachés au domaine. Il faut ajouter winbind à passwd et group, et rajouter wins à hosts. Éditez le fichier /etc/nsswitch.conf.

Exemple :

passwd:        compat winbind
group:         compat winbind
shadow:        compat

hosts:         files mdns4_minimal [NOTFOUND=return] dns mdns4 wins
networks:      files

protocols:     db files
services:      db files
ethers:        db files
rpc:           db files

netgroup:      nis

smb.conf

Le fichier « /etc/samba/smb.conf » est le fichier de configuration de votre client Samba mais aussi de Winbind.

Éditez votre fichier /etc/samba/smb.conf puis modifiez ou ajoutez les paramètres suivant dans la section [Global] :

Paramètre Exemple Rôle et observations
workgroup
workgroup = NomDomaineSamba
Cela correspond au nom de votre domaine.
netbios name
netbios name = Nom_netbios_de_ma_machine
C'est le nom que votre machine doit avoir sur le réseau NetBios.
Attention : ce nom doit être unique au risque de collision et impossibilité de vous connecter.
security
security = DOMAIN
Ce paramètre indique que l'on veut que les options de sécurité soient au domaine
wins server
wins server = 10.0.0.1
Très important pour la résolution de nom NetBios, généralement c'est votre serveur Samba qui est serveur Wins.
winbind separator
winbind separator = /
C'est pour séparer le nom du domaine de l'utilisateur lors de la connexion (ex. : DOMAIN_SMB/Nom_utilisateur)
winbind uid
winbind uid = 10000-20000
C'est pour indiquer la plage de numéro uid que les utilisateurs du domaine utiliseront.
winbind gid
winbind gid = 10000-20000
Idem mais pour les groupes.
winbind use default domain
winbind use default domain = yes
Configure Winbind en domaine par défaut.
template shell
template shell = /bin/bash
Donne le shell par défaut des utilisateurs du domaine
template homedir
template homedir = /home/%D/%U
Indique l'emplacement des répertoires "Home" des utilisateurs du domaine. Il faudra créer le répertoire %D avec D = au nom du domaine Samba. Ce répertoire doit être créé avec les droits root, sinon les utilisateurs du domaine ne pourront pas ouvrir de session même si l'authentification a réussi.

Intégration de la machine au PDC Samba

Pour intégrer votre machine au domaine il vous faut vous connecter au serveur Samba avec :

sudo net rpc join -S IP_du_serveur -U root
passwd:                                   ##mot de passe pour sudo
passwd:                                   ##mot de passe de root connexion au domaine

Joined domain NomDomaineSamba             ##message si l'intégration a réussi

Si vous avez un message d'erreur comme :

Creation of workstation account failed .....

retapez :

sudo net rpc join -S IP_du_serveur -U root
passwd:                                   ##mot de passe de root connexion au domaine

Il faut que "root" ait le droit d'ajouter les machines dans le domaine.

Maintenant il faut relancer le démon Winbind

sudo /etc/init.d/winbind restart
 * Stopping the Winbind daemon winbind                                   [ OK ]
 * Starting the Winbind daemon winbind                                    [ OK ]

Pour tester si cela fonctionne quelques commandes :

wbinfo --own-domain                     ##renvoie le nom du domaine
wbinfo -u                               ##renvoie la liste des utilisateurs du domaine
wbinfo -g                               ##renvoie la liste des groupes

Configuration de pam_mount

Modification des fichiers de configuration pour l'authentification réseau (logiciel PAM)

éditez le fichier/etc/pam.d/gdm et éditez le fichier/etc/pam.d/gdm-autologin

Y ajouter à la fin : @include common-pammount

Dans les secondes lignes des fichiers /etc/pam.d/common-account et /etc/pam.d/common-auth remplacer sufficient par required (sinon l'utilisateur peut ouvrir une session même s'il s'est trompé dans le mot de passe).

Les dernières versions de pam_mount se configurent dans un fichier au format XML.

éditez le fichier /etc/security/pam_mount.conf.xml

L'ajout de lecteurs à monter au démarrage se fait aux alentours de la ligne 270, après une grande partie de commentaires (en bleu dans gedit).

Pour monter les lecteurs au protocole CIFS ajoutez des lignes comme dans les exemples :

Partage global :

<volume fstype="cifs" server="NomDuServeurDePartage" path="INTRANET$" mountpoint="/media/intranet/" user="*" options="rw,auto,iocharset=utf8" />

Dossiers de l'utilisateur :

Pour utiliser l'identifiant de l'utilisateur dans les chemins des dossier à monter, on peut utiliser la variable %(USER) comme dans l'exemple qui suit:

<volume fstype="cifs" server="NomDuServeurDePartage" path="DOS_PERSO$/%(USER)" mountpoint="/media/%(USER)/" user="*" options="rw,auto,iocharset=utf8" />

Alternative à PAM_MOUNT

Une alternative pour le montage de partage Samba est d'utiliser un montage via GDM. Exemple:

Création d'un répertoire « bin » dans le home de l'utilisateur. Création des répertoires dans « /media » pour le montage des lecteurs réseaux (ici « win32 », « espace_perso »)

Création d'un script à l'intérieur de « $HOME/bin » (.mntrezo) :

#!/bin/bash 
# script montage reseau
# montage de \\serveur_samba\win32 
mount.cifs //Adresse_IP_serveur/win32 /media/win32 -o credentials=/home/Nom_Utilisateur/.smbcredentials,domain=Nom_Domaine,uid=1000,gid=100,file_mode=0660,dir_mode=0770,iocharset=utf8 
# montage de \\serveur_samba/perso
mount.cifs //Adresse_IP_serveur/perso /media/perso -o credentials=/home/Nom_Utilisateur/.smbcredentials,domain=Nom_Domaine,uid=1000,gid=100,file_mode=0660,dir_mode=0770,iocharset=utf8

Création du « .smbcredentials » dans « $HOME » :

nano ~/.smbcredentials
Username=...
password=...

Pour exécuter le script en tant que root à l'ouverture de session (pour gnome); le dernier script à s'exécuter avec ces droits est dans « /etc/gdm/PreSession/Default ». Ajouter a la ligne du PATH « /$HOME/bin/ ». A la fin du script juste avant le exit ajouter :

# Execution du script de login ($HOME/bin/mntrezo) 
bash /$HOME/bin/.mntrezo
exit 0

Se déconnecter et se reconnecter. Normalement les lecteurs doivent apparaître.

Configuration de PAM

Les fichiers pam permettent de gérer les connexions et autorisations qu'elles soient locales (gdm,kdm,xdm) ou distantes (ssh). Pour plus d'information sur PAM reportez vous à cette page http://www.linux-kheops.com/doc/cours/jgourdin/outils-tcp-ip/Linux-pam.html

Ici nous voulons que les utilisateurs du domaine puissent se connecter localement donc nous allons modifier le fichier /etc/pam.d/gdm si vous êtes sous Ed/Ubuntu et si vous utilisez Kubuntu c'est /etc/pam.d/kdm. En premier lieu faites une copie de sauvegarde de votre fichier d'origine.

puis éditez le:

sudo gedit /etc/pam.d/gdm

Supprimez le contenu du fichier (attention d'avoir bien fait la sauvegarde du fichier avant) puis ajoutez les lignes suivantes :

auth      required       pam_env.so readenv=1
auth      required       pam_env.so readenv=1 envfile=/etc/default/locale
auth      required       pam_mount.so
auth      sufficient     pam_winbind.so use_first_pass
auth      required       pam_unix.so use_first_pass

account   sufficient     pam_winbind.so
account   sufficient     pam_unix.so

password  required       pam_unix.so nullok obscure min=4 max=8 md5

session   required       pam_unix.so
session   optional       pam_mkhomedir.so
session   optional       pam_mount.so

contributeurs: les contributeurs d'Ubuntu-fr.