Ubuntu dans un domaine géré par SME

Authentification sur le domaine, montage des partages

"Pourquoi utiliser Windows quand Gnu/Linux va si bien ?"


Auteur : Joseph BERAUD (jibe, jibe74)
Sources et sites de référence :

CONTRIBS : le site officiel de SME-Server, qui comporte un forum francophone.
Wiki de CONTRIBS : la page consacrée à l'authentification Ubuntu.
SMEserver.fr : Le site de Grand-Pa, LA référence francophone de SME-server.
Ixus : Un forum dédié à la sécurité informatique, dont une large section est consacrée à SME-server avec le tuto de l'ami ChristianC.

Mise a jour : 6 Mai 2014
Licence : GPL/GFDL


Permission est donnée de copier, diffuser et/ou modifier le présent document en vertu des conditions de la licence GPL, Version 2 ou toute autre version plus récente publiée par la fondation pour le logiciel ouvert « Free Software Foundation ». Permission accordée pour la production de copies mot à mot sans les textes de couverture et avec maintien des mentions de copyright et des auteurs. Une copie de la licence GFDL est disponible sur le site de la Free Software Foundation à l'adresse http://www.fsf.org/copyleft/fdl.html .

Tous les noms et marques de commerce sont la propriété de leurs titulaires respectifs.

"Vite, Simple et Bien" est la devise de FreeEOS.


1. But de ce document

1.1. A Propos de ce guide

Le but est d'obtenir un poste de travail fonctionnel, bien intégré dans un petit réseau comportant une SME comme serveur tout en un. Il s'agira donc principalement de s'authentifier sur le domaine. J'adjoins quelques petites adaptations personnelles que je trouve indispensables et que j'installe systématiquement dans toutes mes installations.

L'authentification sur le domaine, gérée par la SME qui fait office de PDC (Primary Domain Controler) aussi bien pour les postes Windows que Linux, permettra du même coup un montage facile et automatisé des partages. Le tout sera réalisé via Samba, l'implémentation du protocole de réseau Microsoft sous GNU/Linux. Attention : dans sa version 8, SME est PDC d'un domaine Windows NT. Active Directory n'est pas implémenté.

A noter que les imprimantes partagées du réseau, déjà gérées nativement par SME ou de manière autonome (imprimantes Ethernet), ne sont donc pas gérées par Samba. Sous Ubuntu, on y accède normalement par le protocole IPP, et elles sont en principe détectées automatiquement. Je ne m'étendrai donc pas plus sur ce point, l'installation des imprimantes partagées ou non se faisant classiquement comme décrit dans la documentation Ubuntu.

1.2. Distributions et versions concernées

En fait, les postes que j'installes sont sous Linux Mint Maya Mate Edition. Linux Mint étant dérivé d'Ubuntu, et Maya étant l'équivalent de la version 12.04 LTS d'ubuntu, ce document devrait s'appliquer sans changement sur celle-ci. Si j'utilise préférentiellement le bureau Mate (un fork de Gnome 2 : je n'ai jamais aimé Gnome 3, encore moins les bureaux-usine à gaz d'Ubuntu pleins de gadgets inutiles dans un cadre professionnel), j'installe parfois LXDE et je ne vois pas en quoi ce document ne pourrait pas s'adapter quasiment sans changements quelque soit l'environnement de bureau utilisé.

Pour les autres versions de Mint et d'Ubuntu, comme pour les autres distributions dérivées d'Ubuntu, il ne devrait pas y avoir beaucoup à adapter, si tant est qu'il le faille : tout n'est qu'utilisation de paquets disponibles sur les dépôts officiels et usage assez classique de Samba/cifs.

Ce document devrait aussi être une bonne base pour Debian et ses dérivées.

1.3. Mise en place des adaptations

Ces adaptations sont données telles que je les réalise, sans aucune garantie. Pour les mettre en place, vous devez comprendre ce que vous faites et les risques que cela comporte, tout au long de chaque procédure. Le risque ne réside en fait que dans des manipulations erronnées ou mal adaptées.

Je fais faire une copie des fichiers les plus à risque, pour vous permettre de restaurer les originaux en cas de besoin. Faites bien ces copies, et n'hésitez pas à en faire plus si vous avez la moindre crainte. Avant de faire quoi que ce soit sur un poste en production, vous devriez l'expérimenter préalablement sur un appareil de test (qui peut, si besoin, être une machine virtuelle).

La plupart des commandes indiquées doivent être précédées de sudo. Comme j'ai horreur de ce truc, je fais tout en su. Chose que je vous déconseille (faites ce que je dis, pas ce que je fais !), mais bon. Je sais quels risques je prends, et je les assume. Par contre, du coup, beaucoup des commandes que je donne ne sont pas précédées de sudo, ce qui devrait (presque ?) toujours être le cas. A vous de le rajouter !

Attention au copier-coller : pour cette première version du document, je n'ai relu que très rapidement. Une faute de frappe ou autre erreur a pu se glisser dans l'une ou l'autre commande. Vous devez comprendre chacune d'elle avant de les lancer ! Merci de me signaler toute coquille afin que je corrige au plus vite.

Et n'oubliez pas de faire précéder chaque commande par "sudo".

2. Paquets à installer

Voici la liste des paquets que j'installe systématiquement. Suivront quelques commentaires sur certains d'entre eux.

  • numlockx
  • gconf-editor
  • gedit
  • ssh
  • sshfs
  • ethtool
  • wakeonlan
  • xsane
  • cheese
  • gnome-disk-utility
  • Paquets pour l'authentification : winbind libpam-mount smbfs

2.1. numlockx

La fenêtre de connexion de Maya a d'origine le verrouillage numérique désactivé. Il en est de même pour les consoles accessibles par CTRL+ALT+F1à6. On va donc remédier à ce problème grace à ce petit utilitaire.

Activation du verrouillage numérique dans la fenêtre de connexion

Il suffit pour cela d'ajouter dans /etc/mdm/Init/default le code suivant :

if [ -x /usr/bin/numlockx ]; then
     exec /usr/bin/numlockx on
fi

Activation du verrouillage numérique dans les consoles

Il suffit pour cela d'ajouter d'ajouter en fin (avant exit 0) de /etc/rc.local :

# Turn Numlock on for the TTYs: for tty in /dev/tty[1-6]; do
     /usr/bin/setleds -D +num ∠ $tty
done

2.2. gconf-editor

Il s'agit d'un éditeur de configuration permettant quelques réglages pointus... ou simplement d'avoir tout sous la main pour gérer la configuration de l'environnement de bureau. Pas indispensable, mais personnellement je ne sais pas m'en passer !

2.3. gedit

L'installer est une méthode "bourrin" mais facile ! Le problème, c'est que mate utilise un fork nommé pluma. Et comme j'ai l'habitude de souvent appeler l'éditeur de textes par le terminal (pour l'avoir en su par exemple), je préfère avoir gedit. Cela dit, il serait bien plus propre d'utiliser un alias ou un lien symbolique ! Mais, la flemme aidant, je me contente d'une croix de plus lorsque je sélectionne les paquets à installer dans synaptic...

2.4. ssh et sshfs

ssh est indispenable pour pouvoir prendre la main sur SME. Il ne sert à rien pour l'utilisateur du poste, mais rend bien service à l'admin réseau ! J'aime bien avoir tous mes outils sous la main, quelque soit le poste sur lequel je me trouve...

Quant à sshfs, il me permet de faire des "mount" à distance, je le considère aussi comme un outil indispensable pour l'admin réseau. Il n'est lui non plus d'aucune utilité pour l'utilisateur. Entre autres mount à distance, il me permet de monter le disque principal de SME sur le poste d'administration : c'est souvent pratique pour transférer directement des fichiers vers ou depuis les répertoires non partagés de SME.

2.5. ethtool et wakeonlan

Je fais souvent des interventions à distance sur les installations de mes clients. Si la SME est toujours en route (normalement...), il n'en est pas toujours de même pour les postes clients. Il me faut pouvoir les démarrer à distance, mais sur Maya (et tout ce qui est dérivé d'Ubuntu 12.04 si je ne m'abuse), le Wake on Lan se désactive automatiquement. Il faut donc le ré-activer à chaque démarrage. Pour cela, dans /etc/rc.local, on ajoute en dernier (avant exit 0) :

# Activation du wakeonlan
ethtool -s eth0 wol g

Pour vérifier que le WOL est bien actif :

sudo ethtool eth0 | egrep "^[[:blank:]]*Wake-on: (g|d)"

On doit avoir "Wake-on: g" comme réponse. Si "Wake-on: d", le WOL n'est pas activé.

wakeonlan n'est pas indispensable. Juste pour permettre de démarrer à distance un autre poste.

2.6. xsane

C'est quand même bien pratique de pouvoir scanner depuis un poste de travail ! Or, xsane n'est pas installé par défaut...

2.7. cheese

Une petite croix pas indispensable du tout, mais qu'il ne coûte rien de cocher dans synaptic : cheese permet de tester facilement une webcam ou autre dispositif photo ou vidéo. C'est vrai qu'en entreprise, c'est loin d'être indispensable, mais je le laisse au moins pour mémoire (et ne pas l'oublier lorsque je fais une installation privée).

2.8. gnome-disk-utility

Ça, par contre, on en a toujours besoin un jour où l'autre !

3. Authentification sur le domaine

Pour cette partie, j'ai fait un mix de différents documents trouvés sur le net, principalement sur les sites référencés ci-dessus, dont bien sûr l'excellent tuto de l'ami christianc.

3.1. Installation des paquets

Si ce n'est pas déjà fait, on commencera par installer les paquets nécessaires : winbind libpam-mount et smbfs.

3.2. Nom du poste

Ensuite, si ce n'est pas déjà fait (normalement, ça l'est), on nommera le poste. Pour cela, sous root, on éditera /etc/hosts pour y ajouter la ligne :

127.0.0.1 nomduposte

On pourra aussi en profiter pour mettre d'autres couples @IP/nom utiles, bien que ce ne soit pas indispensable puisque SME a un serveur DNS intégré pour le domaine.

3.3. Sauvegarde des fichiers à modifier

On prendra ensuite la précaution de faire un backup des fichiers qui seront modifiés :

cp -a /etc/nsswitch.conf /etc/nsswitch.conf.orig
cp -a /etc/samba/smb.conf /etc/samba/smb.conf.orig
cp -a /etc/security/pam_mount.conf.xml /etc/security/pam_mount.conf.xml.orig
cp -a /etc/pam.d/mdm /etc/pam.d/mdm.orig
cp -a /etc/security/group.conf /etc/security/group.conf.orig
cp -a /etc/sudoers /etc/sudoers.orig

3.4. Configuration de /etc/nsswitch.conf

On remplace le contenu de /etc/nsswitch.conf par :

# /etc/nsswitch.conf
#

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

3.5. Configuration de /etc/samba/smb.conf

Au tour de /etc/samba/smb.conf dans lequel on s'assure d'avoir :

workgroup = mondomaine.local # Mettre bien sûr le nom de domaine correct !

wins server = 192.168.1.1 # Mettre l'@IP de la SME

netbios name = nomduposte # Mettre le même nom que dans /etc/hosts

security = domain

winbind uid = 10000-20000
winbind gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%U
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 10
winbind separator = /
winbind use default domain = yes
acl compatibility = winnt

3.6. Enregistrement des postes clients sur la SME

Avant tout, la SME doit être configurée en PDC. Cela se fait dans le server-manager, section Configuration/Groupe de Travail.

Ensuite, on se logge root sur SME et on tape les commandes suivantes dans lesquelles on remplace bien entendu nomduposte par le nom mis dans /etc/hosts et /etc/samba/smb.conf, sans oublier d'ajouter ici le $ en fin :

signal-event machine-account-create nomduposte$
smbpasswd -a -m nomduposte$

3.7. Intégration du poste client dans le domaine SME

On revient sur le poste. Normalement, la configuration de Samba est relue automatiquement et il n'y a donc rien à faire pour cela. Toutefois, plusieurs tutos recommandent de faire redémarrer le service. Je n'en ai jamais eu besoin, mais après tout, c'est vrai qu'il ne coûte rien de le faire préalablement à la jonction au domaine. Je l'ai donc ajouté (attention, la commande pour redémarrer Samba diffère d'une version à l'autre d'Ubuntu).

sudo service smbd restart
sudo net rpc join -U admin -S IP_SME

On a en réponse :

joined domain mondomaine.local

Il faut alors (re)lancer winbind :

sudo /etc/init.d/winbind restart

En cas de problème pour joindre le domaine (surtout en réutilisant d'anciens comptes de machines !), penser à réinitialiser le "Machine Trust Account" :

smbpasswd -a -m nomduposte$

Penser aussi à vérifier smb.conf avec testparm. On découvre parfois des fautes de frappe ou autre... Par exemple, j'ai mis un moment à trouver d'où pouvait provenir un message "Unable to find a suitable server for domain" finalement il n'était dû qu'à un ":" au lieu du "=" dans "wins server = 192.168.1.1" ! J'aurais découvert bien plus vite cette faute de frappe si j'avais interrogé testparm tout de suite plutôt que Google !

3.7.1 Cas des postes itinérants (portables...)

Normalement, il n'est pas besoin de créer un compte sur le poste pour les utilisateurs connus du PDC. Par contre, le créer reste possible, et même nécessaire si l'utilisateur veut pouvoir se connecter lorsqu'il n'est pas dans le domaine (ou que le PDC n'est pas joignable quelqu'en soit la raison).

Pour mieux comprendre quand et comment créer un utilisateur sur le poste de travail, voici une explication sommaire de ce qui se passe au login :

  • Si l'utilisateur existe sur le poste, on prend les données correspondantes (uid, répertoire home etc.)
  • S'il est connu du PDC et qu'il n'a pas encore d'uid, home etc. on attribue ce qui est prévu pour le rattachement au domaine. On continue avec la procédure de rattachement au domaine.
  • S'il existe sur le poste mais pas sur le PDC (ou pas de PDC dispo), on ouvre la session normalement en local. Bien sûr, les partages du domaine ne seront pas montés.
  • S'il n'existe nulle part, on le refuse

3.7.2 Cas des utilisateurs itinérants

Dans certains cas, un utilisateur a besoin de pouvoir se connecter sur plusieurs postes, par exemple selon l'endroit où il travaille. Avec Windows, on a possibilité de créer des "profils itinérants". Personnellement, je trouve que le prix à payer (un temps de connexion et récupération du profil extrêmement long !) est bien cher pour retrouver partout la photo du petit dernier qu'on a mise en fond d'écran !

Par contre, il y a certaines choses qu'il est indispensable de retrouver, et qui doivent l'être bien sûr avec les mêmes droits d'accès quel que soit le poste utilisé. Pour ce faire, je combine deux moyens : la synchronisation de certains services (marque pages, agendas etc.) par owncloud (Vous ne pensiez quand même pas que j'allais confier ça à Google ou Amazon, ni même à Ubuntu ?) et l'utilisation des répertoires personnels sur SME. Le comment faire cela me parait à la fois assez simple et trop hors sujet pour être traité ici.

Par contre, une chose est importante : l'utilisateur doit toujours avoir son même numéro d'identification quel que soit le poste où il se connecte. Les UID sous Linux sont en effet des nombres, pas des noms d'utilisateur. On peut facilement voir quel nombre nous est attribué en tapant dans un terminal :

ls -an

Pour le moment, je n'ai pas trouvé comment faire en sorte que le PDC attribue toujours le même nombre à un utilisateur qui se connecte depuis deux postes différents (voir le paragraphe précédent sur l'attribution des UID). Si quelqu'un a la solution, je serais bien heureux qu'il me l'indique !

En attendant mieux, je crée les utilisateurs itinérants sur chaque poste, en prenant bien soin de leur affecter manuellement toujours le même UID. Ainsi, étant connus, il ne leur est pas affecté un UID arbitraire lors d'une première connexion.

3.8. Premiers tests

Maintenant, on doit être capable de communiquer avec la SME. Quelques commandes permettent de le vérifier et éventuellement de retrouver quelques paramètres :

net rpc testjoin
service smb status
service winbind status
wbinfo -p # "Ping" le serveur winbind pour vérifier sa disponibilité
wbinfo -u # Liste les utilisateurs du domaine
wbinfo -g # Liste les groupes du domaine
wbinfo --own-domain # Indique le domaine
wbinfo -i toto # Infos sur l'utilisateur toto (s'il existe !)
wbinfo --group-info "mon equipe" # Infos sur le groupe "mon equipe" (s'il existe !)
wbinfo -a toto # Authentifie toto (s'il existe !) avec demande de mot de passe
wbinfo -a toto%passwd # Authentifie toto avec son mot de passe "passwd"
getent group # Détails des groupes
getent aliases # Liste des alias
getent passwd # Liste des utilisateurs

ATTENTION : il est classique d'oublier de

  • désactiver SElinux,
  • Joindre le domaine (net rpc...)
  • Démarrer samba
  • Démarrer winbind
Selon ce qu'on a oublié (en particulier samba...), les tests wbinfo et/ou getent fonctionnent malgré tout !

3.8.1. SElinux

Linux Mint Maya n'a pas SElinux installé par défaut. Je n'en ai donc pas parlé : je n'en vois pas bien l'utilité dans les installations que je réalise, et de plus il risque d'interférer avec Samba. Dans le cas où il serait nécessaire, étant donné que ce n'est pas vraiment le sujet de ce site, merci de vous reporter à la documentation disponible sur Internet (que Google ou autre peut vous aider à trouver).

S'il est installé, SElinux devra soit être désactivé, soit être configurer pour permettre l'authentification sur le domaine et les partages. Pour ce type de configuration, merci là aussi de vous reporter à la documentation adéquate.

3.9. Configuration de pam

Pour que l'authentification par la fenêtre de connexion (mdm dans le cas de Maya/Mate, pour d'autres environnements il peut s'agir de gdm, ldm, xdm etc.) se fasse bien via winbind, on remplace le contenu de /etc/pam.d/mdm par le suivant :

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_group.so
session optional pam_mount.so

Cela permet de se connecter sur le poste avec n'importe quel utilisateur reconnu par SME, même s'il n'est pas connu du poste.

Attention : Il est important d'avoir au moins un utilisateur créé sur le poste (qui peut être l'un de ceux connus de SME ou un autre spécialement prévu) avec les droits d'administration, de manière à pouvoir intervenir sur le poste même en cas de problème d'authentification sur le domaine.

3.10. Montage des ibays et répertoires utilisateurs

Pour que les partages auxquels il a droit soient automatiquement "mountés" lors du login de l'utilisateur, il faut ajouter le montage des volumes voulus dans /etc/security/pam_mount.conf.xml :

# pour le montage des ibays :
<volume fstype="cifs" server="IP_de_la SME" path="ibays1" mountpoint="/media/ibays1/" user="*" options="rw,auto,iocharset=utf8" />

# Pour le montage des dossiers utilisateurs :
<volume fstype="cifs" server="192.168.1.1" path="%(USER)" mountpoint="/media/%(USER)/" user="*" options="rw,auto,iocharset=utf8" />

Dans cette configuration, il faut mettre pour path= le nom de l'ibay, telle qu'elle a été créée sur la SME, c'est à dire le nom qui est donné dans la page "ibays" du server-manager. Pour mountpoint=, vous pouvez mettre ce que vous voulez aussi bien comme chemin (/media/ /mnt/, /media/sme/ etc.) que comme nom de répertoire de montage. Il peut être utile pour raisons mnémotechniques ou autres, mais non nécessaire, de faire correspondre la description de l'ibay avec ce nom. Attention au fait que le nom de montage est créé automatiquement s'il doit être dans /media, mais dans ce cas seulement : si vous indiquez mountpoint=/media/toto, vous n'avez pas besoin de créer le répertoire toto dans /media. Mais si vous indiquez mountpoint=/mnt/toto, il vous faudra préalablement à tout montage avoir créé le répertoire /mnt/toto.

Vous pouvez sans inconvénient mettre tous les partages : seuls ceux pour lesquels l'utilisateur a les droits d'accès seront "mountés".

Cette manière de faire a une petite contrainte : il faut éviter d'avoir deux sessions utilisateur ouvertes en même temps, parce que d'une part les montages des deux utilisateurs vont être cumulés, et d'autre part, lorsque l'un d'eux va se déconnecter, tous les partages seront démontés, n'en laissant plus aucun à l'utilisateur restant connecté.

Par contre, cette manière de faire a aussi un avantage, celle de faire un démontage propre en fin de session, uniquement des montages effectués par pam, et donc pas ceux faits automatiquement au démarrage par /etc/fstab.

3.11. Réglage des droits

Il peut être souhaitable d'attribuer certains droits à certains utilisateurs. Pour cela, on modifie le fichier /etc/sudoers. Supposons que nous voulions donner tous les droits à admin (puisqu'il est déjà administrateur de SME, pourquoi ne le serait-il pas sur le poste ?). Voici ce qu'il faut ajouter à /etc/sudoers :

# User alias specification
admin ALL=(ALL:ALL) ALL

3.12. Adhésion aux groupes

On peut ajouter l'adhésion à certains groupes. Pour cela, ajouter dans /etc/security/group.conf :

# Adhésion pour tous aux groupes floppy,audio,cdrom,video,plugdev,scanner
* ;* ;* ;Al0000-2400 ;floppy,audio,cdrom,video,plugdev,scanner

# admin fait partie aussi des groupes fuse et dialout
* ;* ;admin ;Al0000-2400 ;fuse,dialout

4. Et avec deux SME ?

On peut avoir une architecture réseau comportant deux SME. Dans ce cas, on a plusieurs solutions pour gérer les authentifications et les partages. Pour ma part, j'utilise la configuration en "Domain Member" de la seconde SME. Comment faire ça est expliqué dans ce document.

5. Libre Office 3.4 et impression en paysage (landscape)

Cela n'a rien à voir avec SME ni spécifiquement Ubuntu (hormis l'emplacement de spadmin qui varie d'une distrib à l'autre), mais peut être utile : il y a un bug dans LO 3.4 qui fait que l'impression en mode paysage ne peut souvent pas se faire. Pour y remédier, suivre la procédure suivante :

  • Fermer tous les documents Libre Office
  • Ouvrir un terminal
  • Lancer :

    /usr/lib/libreoffice/program/spadmin

  • Sélectionner l'imprimante voulue
  • Cocher (momentanément) la case "Désactiver la prise en charge de CUPS" (sinon, les modifs ne sont pas prises en compte !)
  • Vérifier que la bonne imprimante soit bien sélectionnée (parfois, après avoir désactivé CUPS, on se retrouve avec la mauvaise !)
  • Aller dans "Propriétés...", onglet "Périphérique"
  • Modifier le "Type de langue de l'imprimante" et le passer à Postscript Niveau 1 ("PDF" et le "niveau à partir du pilote" ne fonctionnent pas, pas testé les autres niveaux PostScript)
  • Allez dans l'onglet "Papier" et s'assurer d'avoir le bon (laisser "Paysage" par défaut qui est le plus courant)
  • Valider les nouvelles propriétés (la fenêtre se ferme)
  • Décocher la case "Désactiver la prise en charge de CUPS"
  • Fermer spadmin, l'impression en paysage devrait fonctionner
  • Si un problème persiste, aller dans Fichier->Paramétrages de l'imprimante->Propriétés et vérifier que le document ne force pas une mauvaise orientation du papier ou un mauvais type de langue de l'imprimante.

Sources :
http://www.mageialinux-online.org/forum/topic-11728+probleme-d-impression-en-paysage-avec-libre-office.php
http://askubuntu.com/questions/191524/set-default-printer-settings-libreoffice
http://unix.stackexchange.com/questions/15938/libre-office-change-printer-language-type-from-pdf-to-postscript

A. Changelog

2 Octobre 2014 : Ajout du paragraphe 5 sur le bug d'impression en paysage avec Libre Office.
6 Mai 2014 : Divers compléments et corrections.
2 Mai 2014 : Version complète (pour l'instant ;-) ).
28 Avril 2014 : Pré-version incomplète.


Nagasunod sa CSS Conformité XHTML 1.1 Nagasunod sa istandard Babaw kang pahina Puluy-anInformaticsTraduksiyonDokumentasyonSari-sari
DokumentasyonFreeEOS/SMEAffa