Table des matières
Le système X-window
Configuration de X.org :
Login graphique (login manager)
A partir de la ligne de commande, pour lancer une fenêtre de login graphique (et choisir entre les différentes interfaces, kde, icewm, etc): gdm kdm mdkkdm … (en cas de “command not found”, penser à installer ces utilitaires !)
Changer de login manager
L'interface de kdm est la plus fonctionnelle. Si elle n'est pas installée par défaut, installer kdebase-kdm, puis mcc > System > Choose the display manager
Fichiers de configuration
cf répertoires /etc/X11/xdm/
Changer de login manager
# mcc System > Choose the display manager ….
Configurer le login manager
K > System > Configuration > Configure your Desktop > System > Login Manager NB : K > System > Configuration > Configure your Desktop, c'est le “KDE Control Center”
Configurer GDM à partir de 2008.0
Avant MDV 2008.0, le fichier de configuration de gdm est : /etc/X11/gdm/gdm.conf ou /etc/X11/gdm/custom.conf suivant les versions A partir de MDV 2008.0, ça se complique :
- les valeurs par défaut sont dans : /usr/share/gdm/defaults.conf
- le fichier gdm utilisé et à personnaliser est : /etc/X11/gdm/custom.conf
Par contre ce fichier est vide de toute configuration : il ne contient que la documentation sur gdm.conf !!! Il y a aussi un fichier /etc/X11/gdm/gdm.conf pratiquement vide
⇒
- Sauvegarder /etc/X11/gdm/custom.conf dans /etc/X11/gdm/custom.conf.original (au cas où on en aurait encore besoin, sans doute inutile)
- Enregistrer /usr/share/gdm/defaults.conf dans /etc/X11/gdm/custom.conf
- Pour autoriser les connexions par X -query, chercher [xdmcp] et remplacer Enable=false par Enable=true
cp /etc/X11/gdm/custom.conf /etc/X11/gdm/custom.conf.original cp -f /usr/share/gdm/defaults.conf /etc/X11/gdm/custom.conf vi /etc/X11/gdm/custom.conf
Autologin et lancer automatiquement l'environnement graphique
Pour changer (supprimer) ces automatismes : # mcc Boot > Enable autologin and select the user to automatically log in Dans la fenêtre qui s'ouvre cocher/décocher les comportements désirés
Autre solution (à vérifier)
Dans /etc/inittab, changer : id:3:initdefault: en id:5:initdefault: (sur Mandrake en effet : 3 - Full multiuser mode 5 - X11)
Autre solution : supprimer le démarrage automatique en mode graphique
Editer /etc/X11/xdm/Xservers Mettre en commentaire (#) la ligne : :0 local /bin/nice -n -10 /usr/X11R6/bin/X -deferglyphs 16
Sessions X multiples
Depuis la session X de départ (display 0) : <Alt Ctrl Fn> (Fn est une des touches de fonction F1 à F6 pour accéder à la console texte à utiliser)
- login de l'utilisateur désiré
- mot de passe
startx – :n
(où n est un n° de console graphique virtuelle (0 est déjà pris Attention, espace indispensable entre – et :n)
Pour passer d'une console à une autre :
- <Ctrl Alt F7> pour la première console graphique
- <Ctrl Alt F8> pour la 2°, etc. (F7 à F11 utilisables)
- <Ctrl Alt F12> messages système
cf. http://www.mandrakeuser.org/docs/xwin/xnet.html
Démarrer une interface graphique particulière :
startx /etc/X11/xdm/Xsession KDE -- :n startx /etc/X11/xdm/Xsession Gnome -- :n startx /etc/X11/xdm/Xsession IceWM -- :n startx /etc/X11/xdm/Xsession WindowMaker -- :n startx /etc/X11/xdm/Xsession Enlightenment -- :n startx /etc/X11/xdm/Xsession BlackBox -- :n startx /etc/X11/xdm/Xsession Sawfish -- :n startx /etc/X11/xdm/Xsession XFce -- :n
Mode texte/mode graphique
# init 3 ⇒ texte # init 5 ⇒ graphique
Au boot avec Grub : “e” pour éditer la ligne de commande Pour booter en init 3, il suffit donc d'ajouter un “3” à la liste des options sur la ligne qui appelle le noyau (kernel=….. 3 ), de valider les modifs (Entrée) et d'appuyer sur “b” pour poursuivre le boot. Cette manip n'affecte que le boot présent et donc au prochain passage par grub, tout se passe par défaut (init 5)
Redirections
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.html http://www.cpqlinux.com/redirect.html
3 descripteurs de fichier : stdin, stdout, stderr avec comme numéros stdout : 1 stderr : 2
XF86Config
Localisation : /etc/X11/XF86Config-4 (ou /etc/X11/XF86Config)
Changer de clavier (français, anglais, etc)
Section “InputDevice”
Option "XkbLayout" "fr"
Clavier us :
Option "XkbLayout" "us"
Terminaux X
http://www.tldp.org/HOWTO/XDMCP-HOWTO/
3 possibilités:
- Client unix → serveur unix : X -query …
- le plus simple à mettre en oeuvre : tout ce qui est nécessaire est déjà présent et installé avec la plupart des distributions linux.
- à éviter à travers un réseau non sécurisé.
- 2 - Client unix ou windows → serveur unix via SSH : NX
- Idéal à travers un réseau non sécurisé
- Nécessite un PC assez puissant (CPU 200 Mhz, 64 Mo RAM insuffisant ; 700 Mz, 96 Mo RAM parfait), avec un système d'exploitation installé sur le client (unix, windows ou même Mac OS X)
- Client (léger) unix → serveur unix : LTSP (Linux Terminal Server Project)
- Idéal pour transformer de vieux PCs (P200 ou moins), sans disque dur, en terminaux X performants
X -query ...
Soit S le serveur (machine sur laquelle on veut se connecter) et T le terminal :
Sur S
- Firewall :
- ouvrir le port 177 en UDP
- Relancer le firewall
- Vérifier quel est le xdm actif (# ps aux | grep dm)
- Si c'est gdm :
- gdmsetup (ou gdmconfig, c'est un alias) : autoriser XDMCP
- On peut également modifier directement /etc/X11/gdm/gdm.conf (nouvellement /etc/X11/gdm/custom.conf) à la main : chercher [xdmcp] et changer “Enable=false” en “Enable=true”
- Si c'est kdm :
- éditer /etc/kde/kdm/kdmrc, chercher[Xdmcp] et remplacer Enable=false par Enable=true
- Pour un autre “display manager”, voir la doc http://www.tldp.org/HOWTO/XDMCP-HOWTO/
- Relancer le display manager pour que la modification soit prise en compte : (# service dm restart)
Sur T
- Firewall : ouvrir 1 ou plusieurs ports tcp pour X : 6000, 6001, etc. (cf. www.iana.org/assignments/port-numbers)
- Faire afficher le “Login manager” par la commande : X -query nom_ou_IP_du_serveur_S :1 1)
- Connexion automatique :
- dans /etc/inittab :
x:5:respawn:/usr/X11R6/bin/X -query nom_ou_IP_du_serveur_S
- sur système récent, créer un lanceur (par exemple x11-query.service) dans
/etc/systemd/system
qui contient une ligneExecStart=/usr/bin/X -query <IP>
Problème
Si on n'obtient pas la mire de login (l'écran reste bleu) c'est sans doute que le port 177 est resté fermé. Vérifier avec nmap à partir de T :
[T]# nmap -s U -p 177 le_serveur PORT STATE SERVICE 177/udp closed xdmcp
- vérifier la configuration du firewall du serveur
- Xdmcp est peut-être à false, le changer (dans /etc/kde/kdm/kdmrc /etc/lightdm/lightdm.conf, etc.)
[Xdmcp] Enable=true
Puis relancer le Display Manager : # service dm restart
On doit alors avoir à partir de T :
# nmap -s U -p 177 le-serveur PORT STATE SERVICE 177/udp open|filtered xdmcp
Terminaux X, nx, freenx
Serveur nx (freenx)
- Sur le serveur, installer freenx (qui dépend de plusieurs autres programmes et les installe aussi). L'installation crée l'utilisateur système “nx” A la fin le message /usr/share/doc/freenx/README.urpmi s'affiche :
Pas de man, mais : # --help nombreuses commandes pour l'administration : intéressant, à lire absolument !
Info sur le paquetage dans /usr/share/doc/freenx-0.0.4.4/README.urpmi.
NB : pour connaître les dépendances de freenx : $ rpm -q –requires freenx
- Ajouter les utilisateurs qui pourront se connecter à ce serveur (utile ?) :
# nxserver --adduser utilisateur # nxserver --passwd utilisateur et entrer le mot de passe de l'utilisateur
- Démarrer (redémarrer) le serveur :
# nxserver --restart
Fichiers de configuration
/etc/nxserver/ /etc/nxserver/node.conf (configuration du serveur)
Client nx
- Télécharger et installer le rpm disponible sur http://www.nomachine.com (NX client for Linux, free) - Copier la clé privée /var/lib/nxserver/nxhome/.ssh/client.id_dsa.key qui est sur le serveur, dans un répertoire quelconque du client (répertoire /usr/NX/share/ ou répertoire /usr/NX/share/keys qui ont été créés lors de l'installation du client par exemple) avec un nom quelconque (du genre “NomDuServeur_client.id_dsa.key” par exemple) . S'il existe déjà une clé avec ce nom, l'écraser. - Démarrer le client nx nomachine :
$ nxclient (ou nxclient --wizard) et répondre aux questions pour se connecter. En particulier, dans l'onglet "General", cliquer sur le bouton "Key..." et importer la clé que l'on vient de copier. Autre solution (aussi simple, sinon plus) : - se logger par ssh en root sur le serveur - afficher la clé : cat /var/lib/nxserver/nxhome/.ssh/client.id_dsa.key - la copier/coller dans la fenêtre "DSA Key" et sauvegarder (bouton [Save])
Explication (http://www.marco-plaut.fr/article.php3?id_article=2) : Le client se connecte d'abord au serveur en tant qu'utilisateur “nx” avec cette clé (/usr/NX/share/client.id_dsa.key ou le nom qu'on lui a donné, dans le cas de freenx : /var/lib/nxserver/nxhome/.ssh/client.id_dsa.key). Puis l'utilisateur s'identifie ensuite sur le serveur avec le nom d'utilisateur et le mot de passe déclaré au niveau du serveur.
On peut créer sur le client plusieurs fichiers de configuration pour se connecter à différents serveurs et avoir autant d'icônes correspondantes sur le bureau. Les fichiers de configuration sont dans : ~/.nx/config/<NomDuServeur>.nxs
Installation des versions 2 du client et du serveur
Nettoyage de versions précédentes (après les avoir désinstallées) # rm -rf /usr/NX $ rm -rf ~/.nx (pour supprimer les configurations utilisateur)
Coté serveur ++++++++++++ Télécharger (les rpm) : - nxclient - nxnode - nxserver et les installer dans cet ordre.
Nb : il est préférable d'installer freenx à la place de nxserver. 1 - contrairement à nxserver, freenx n'est pas limité à 2 connexions 2 - nxserver ne fonctionne pas sous MDV 2007 ( freenx-0.5.0-3.rev281.1mdv2007.0 fonctionne parfaitement avec les versions actuelles nxclient-2.1.0-9.i386.rpm nxnode-2.1.0-12.i386.rpm voir plus loin.
Vérifier que ces installation se sont bien passées : $ less /usr/NX/var/log/install Consulter http://www.nomachine.com/documentation/admin-guide.php
Messages à l'installation de nxnode : NX> 700 Install log is '/usr/NX/var/log/install'. NX> 700 Creating configuration in /usr/NX/etc/node.cfg. NX> 700 Inspecting local CUPS environment. NX> 700 Generating CUPS entries in: /usr/NX/etc/node.cfg. NX> 700 Installation of version: 2.0.0-100 completed.
Messages à l'installation de nxserver : NX> 700 Install log is: /usr/NX/var/log/install. NX> 700 Creating configuration file: /usr/NX/etc/server.cfg. NX> 723 Cannot start NX statistics: NX> 709 NX statistics are disabled for this server. NX> 700 Showing file '/usr/NX/share/documents/server/install-notices': ⇒ voir la notice d'installation dans /usr/NX/share/documents/server/install-notices
Démarrage/arrêt : # /etc/rc.d/init.d/nxserver start|stop|restart (status absent) ou : # nxserver –start|–stop|–restart|–status (voir toutes les possibilités avec nxserver –help) ou : # service nxserver start|stop|restart|status
nxserver/freenx et MDV 2007 ++++++++++++++++++++++++++ Impossible de se connecter sur une MDV 2007 sur laquelle est installé nxserver-2.1.0-13.i386.rpm. Message d'erreur : Info: Established X server connection. Info: Using shared memory parameters 1/2048K. Error: Connection with remote peer broken. Error: Please check the state of your network and retry. Session: Session terminated at 'Tue Nov 28 09:35:19 2006'.
Solution : installer freenx.
Coté client +++++++++++ Installer nxclient version 2 Lancer nxclient
- Dans l'onglet “General” Cliquer sur <Configure> Cocher “Remember my password” Cliquer sur <Key> Dans le fenêtre que s'ouvre (DSA key) effacer la clé qui s'y trouve et la remplacer par la clé privée qui se trouve sur le serveur dans le fichier /var/lib/nxserver/nxhome/.ssh/client.id_dsa.key (cf. le messageg qui termine l'installation de freenx : Your user must install the key located at: “/var/lib/nxserver/nxhome/.ssh/client.id_dsa.key to log in.”)
- Dans l'onglet “Advanced” Cocher “Enable SSl encryption of all traffic”.
Pour ajouter un utilisateur à la base de données NX : # /usr/NX/bin/nxserver –useradd <utilisateur> La commande : # /usr/NX/bin/nxserver –usercheck <utilisateur> donne exactement le même résultat !
Remarque : toutes les installations de nx ont la même clé privée (/usr/NX/share/keys/server.id_dsa.key) : ne semble pas très sûr ! Changer les clés.
Ajouter une autre session
$ nxclient ou $ nxclient –wizard –wizard a l'avantage de proposer de créer une icône sur le bureau.
Modifier une configuration
Une fois la session créée le bouton [Configure] n'est plus accessible lorsqu'on clique sur l'icône. Pour y accéder, lancer nxclient.
Debugging
cf. http://www.nomachine.com/documentation/supp-request.php Fichier /etc/nxserver/node.conf : changer les valeurs par défaut des variables suivantes, et mettre : SESSION_LOG_CLEAN=0 SESSION_LOG_LEVEL=7 Voir les logs dans - /var/log/nxserver.log (vérifier que le “user” nx a le droit d'y écrire) modifier la “verbosité” dans NX_LOG_LEVEL= - grep NX /var/log/messages - ~/.nx/temp/<un numéro>
Problèmes - bugs :
Après installation de nxserver, dans /usr/NX/var/log/install +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ NX> 200 Connected to address: 127.0.0.1 on port: 22 NX> 202 Authenticating user: nx NX> 208 Using auth method: publickey NX> 204 Authentication failed..
⇒ éditer /etc/ssh/sshd_config S'il y a un ligne “AllowUsers”, vérifier que nx y soit déclaré : AllowUsers toto bibi nx
NB : nx@127.0.0.1 est suffisant pour l'installation, mais bloque la connexion (message “Server not installed or NX access disabled”, voir plus loin.
NX> 202 Authenticating user: nx NX> 208 Using auth method: publickey NX> 204 Authentication failed. +++++++++++++++++++++++++++++ Solutions possibles : - Vérifier que l'utilisateur nx existe sur le serveur (userdrake) - Vérifier sur le serveur que nxserver tourne (# nxserver –status). - Sur le client (nxclient de nomachine) vérifier que la clé publique est la bonne : ⇒ lancer nxclient Configure > General dans l'encadré “Server” : Key > Import charger la bonne clé et la sauvegarder dans la configuration
Session 'serveur' failed due to connection timeout ++++++++++++++++++++++++++++++++++++++++++++++++++ Configure > Advanced > cocher “Enable SSL encryption of all traffic”
Pas de connexion possible sur nxserver sous MDV 2005 et message d'erreur : ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ $ nxproxy nxproxy: symbol lookup error: nxproxy: undefined symbol: NXTransParseCommandLine (ou autre symbole non défini) Est obtenu sous MDV2005 alors que nxserver fonctionne sans problème sous MDV 2006.0 Cause probable : une erreur dans le rpm freenx. Alors que le paquet semble le même dans MDV 2005 et 2006 (freenx-0.4.4-1mdk) les dependances installées sont différentes : MDV2005 MDV2006 nxproxy-1.5.0-2mdk nxproxy-1.5.0-3mdk nxpagent-1.5.0-2mdk nxproxy-1.5.0-3mdk
Server not installed or NX access disabled ++++++++++++++++++++++++++++++++++++++++++ Soit (par exemple) 241.89.78.13 l'adresse IP du client, sur le serveur dans “/var/log/messages” : sshd[32108]: User nx from 241.89.78.13 not allowed because not listed in AllowUsers sshd[32108]: Failed none for invalid user nx from 241.89.78.13 port 41170 ssh2
Solution : Sur le serveur, éditer le fichier /etc/ssh/sshd_config - à AllowUsers, rajouter nx (AllowUsers toto nx) - décommenter “#PubkeyAuthentication yes” (il semble qu'en fait la valeur par défaut soit “no”)
Server not installed or NX access disabled ++++++++++++++++++++++++++++++++++++++++++ dans “/var/log/messages” : sshd[2774]: reverse mapping checking getaddrinfo … failed - POSSIBLE BREAK-IN ATTEMPT!
Le client qui veut accéder au serveur nx n'est pas déclaré dans un DNS.
Error: nxagent failed to start with: Unrecognized option: 1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ NXCLIENT - Version 2.0.0-98 donne cette erreur avec freenx (NXSERVER - Version 1.4.0-44) Une solution peut-être ici : http://mail.kde.org/pipermail/freenx-knx/2006-September/004074.html Autres solutions : - réinstaller nxclient-1.5.0-113.i386.rpm - utiliser les versions “free” nxserver, nxnode et nxclient disponibles sur le site http://www.nomachine.com/download-package.php?Prod_Id=34
- freenx : +++++++++++ Tcl_Init failed: Can't find a usable init.tcl in the following directories:
/usr/lib/tcl8.4 /usr/lib/tcl8.4 /lib/tcl8.4 /usr/library /library /tcl8.4.13
/library /usr/lib/tcl8.4
⇒ urpmi tcl et réinstaller freenx.
Mais ne semble pas fonctionner avec les versions 2 de NX : à éviter Utiliser plutôt “NX free editon for Linux” sur le site NX Nomachine.