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.