Commit f5fbb560 authored by Matthieu Gautier's avatar Matthieu Gautier
Browse files

Initial commit

- Le contenue a été pris chez linuxfr.org
- Une page d'index
- Des pages d'article avec un menu
- Responsive
parents
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>{{ hx(page["title"]) }}</title>
<meta name="description" content="{{ hx(page.get("description", "a poole site")) }}" />
<meta name="keywords" content="{{ hx(page.get("keywords", "poole")) }}" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/pure-min.css">
<!--[if lte IE 8]>
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/grids-responsive-old-ie-min.css">
<![endif]-->
<!--[if gt IE 8]><!-->
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/grids-responsive-min.css">
<!--<![endif]-->
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="layout">
<div id="content">
{{ __content__ }}
<div class="pure-g">
<!--%
mpages = [p for p in pages if "menu-position" in p]
mpages.sort(key=lambda p: int(p["menu-position"]))
entry = '''<div class="%(header_style)s index-entry">
<div class="content">
<a href="%(url)s">%(title)s</a>'
</div></div>'''
for p in mpages:
style = p.get('title-style', "pure-u-1 pure-u-md-1-4 pure-u-lg-1-4")
print(entry%dict(list(p.items()) +[('header_style', style)]))
%-->
</div>
</div>
</div>
</body>
</html>
title: MUFFIN - Renew preview
template: index.html
menu-position: 0
---
## Welcome to MUFFIN
This presentation in a preview/POC of a new concept for MUFFIN.
The idea is to test what format we can do for the next release of MUFFIN.
#menu {
margin-left: -250px; /* "#menu" width */
width: 250px;
position: fixed;
background: #294172;
color: white;
height: 100%;
top: 0;
}
#menu a {
color: inherit;
text-decoration: none;
}
/* -- Responsive Styles (Media Queries) ------------------------------------- */
/*
Hides the menu at `48em`, but modify this based on your app's needs.
*/
@media (min-width: 48em) {
#layout {
padding-left: 250px; /* left col width "#menu" */
}
}
@media (max-width: 48em) {
/* Only apply this when the window is small. Otherwise, the following
case results in extra padding on the left:
* Make the window small.
* Tap the menu to trigger the active state.
* Make the window large again.
*/
#layout.active {
/* position: relative; */
left: 150px;
}
}
menu-position: 3
title: Parlons XMPP - épisode 6 - les commandes à distance
authors: Goffi
date: 2015-07-27T12:31:53+02:00
license: CC by-sa
tags: xmpp, tutoriel et parlons_xmpp
---
(pour lire les épisodes précédents, suivez [l'étiquette correspondante](http://linuxfr.org/tags/parlons_xmpp/public))
Aujourd'hui nous allons parler d'une de mes fonctionnalités favorites dans XMPP : les commandes à distance. Il s'agit de la possibilité pour 2 entités XMPP d'exécuter des actions à distance de manière générique.
La première méthode, assez peu utilisée à ma connaissance, est via la [XEP-0009](https://xmpp.org/extensions/xep-0009.html) (oui c'est une vieille, elle date de 2001), qui donne une méthode pour utiliser [[XML-RPC]] à travers XMPP.
XML-RPC est un [Système de communications inter processus](https://fr.wikipedia.org/wiki/Communication_inter-processus), c'est à dire un moyen pour 2 entités de communiquer à distance. Vous pouvez ainsi exécuter des commandes indépendamment du langage de programmation, en ayant des données décrites (est-ce que je reçois un entier ? Une chaîne de caractères ?). Ceci est particulièrement adapté pour la communication de machines à machines, quand on sait déjà quelles méthodes sont disponibles et ce qu'elles font. Le cas type est une interface de programmation (ou [API](https://fr.wikipedia.org/wiki/Interface_de_programmation)) pour permettre de contrôler quelque chose, comme un serveur par exemple.
La deuxième méthode est appelée commandes « ad-hoc » (de circonstance), et c'est la [XEP-0050](https://xmpp.org/extensions/xep-0050.html) qui les explique. L'idée est aussi de pouvoir exécuter de manière générique des commandes, mais cette fois sans savoir à l'avance ce qui va être disponible, et en pensant plutôt à une interaction humain/machine, bien que machine/machine soit bien sûr tout à fait possible.
Le cas typique d'utilisation est la configuration d'un service, mais ce peut être utilisé pour n'importe quoi.
Ce qui rend cette fonctionnalité particulièrement puissante, c'est qu'elle fait partie de XMPP et donc peut profiter de tous ses avantages, en particulier l'authentification forte (quand on parle à `server@example.net`, on sait qu'on ne parle pas à quelqu'un d'autre) et la liste de contacts (roster) avec leurs groupes. Nous avons ainsi un système de permissions simple à mettre en œuvre et efficace.
Prenons un exemple: vous êtes administrateur sur Prosody (pour mémoire, un serveur XMPP populaire) – pour cela il vous suffit de donner votre jid dans la variable « admins » dans la configuration –, et vous voulez… pouvoir administrer votre serveur. Pas besoin de s'embêter à avoir une page web dédiée avec mot de passe etc, il vous suffit d'avoir un client XMPP qui gère les commandes ad-hoc (Gajim par exemple), et d'entrer l'adresse de votre serveur.
Exemple ci-dessous avec Libervia, l'adresse libervia.org est celle du serveur, voici ce que, en tant qu'admin, je peux voir.
![capture d'écran des commandes ad-hoc pour un admin avec Libervia](https://lut.im/HonhWxix/Tc4XYZxY)
Le « Send Announcement to Online Users » (envoyer une annonce à tous les utilisateurs en ligne) est particulièrement utile juste avant une mise à jour.
Avec un compte lambda, voilà ce que l'on voit :
![capture d'écran des commandes ad-hoc pour un utilisateur lambda avec Libervia](https://lut.im/Lu4nXhXC/Kq20qJbX)
Malheureusement avec certains clients, l'accès est tout sauf intuitif. Je pense que l'exemple le pire est Psi : pour accéder aux commandes du serveur il faut aller dans la découverte des services (« service discovery ») soit via le menu « General » soit en cliquant droit sur votre profil, puis cliquer sur le nom de votre serveur dans la liste des services, puis enfin cliquer sur l’icône en forme de terminal, appelée « execute command » (exécuter une commande).
Dans Gajim c'est plus simple (clique droit sur votre profil puis « exécuter une commande »), dans Swift c'est dans le menu Actions => Run Server Command (Exécuter une commande serveur). Si vous voulez exécuter des commandes sur un jid arbitraire dans Gajim, il vous faut passer par le menu « Découvrir les services », comme avec Psi ; je n'ai pas l'impression que ce soit possible avec Swift.
Ci dessous une capture de Movim, ces commandes sont dans le menu « actions »:
![les actions dans Movim](https://lut.im/VXeZ2Zvh/juPkxaB8)
Même sans être administrateur, les commandes « ad-hoc » peuvent vous être utiles. Par exemple, vous avez oublié de déconnecter votre client chez vous et vous vous trouvez chez un ami. Il vous suffit de vous connecter, et de spécifier le jid complet, avec la ressource, de votre client à la maison. SàT par exemple vous permet à l'heure actuelle de changer votre statut voire de vous déconnecter. Gajim permet en plus de transférer les messages non lus ou de quitter des salons de discussions.
![Accès à un client Gajim à distance](https://lut.im/eJsFAxZO/RDsH1pup)
Il est facile d'imaginer à quel point cette fonctionnalité peut être utile pour l'administration ou la surveillance de serveurs, pour la robotique, la domotique, le contrôle à distance de votre ordinateur, de votre bot XMPP, etc.
Voyons un autre cas pratique que nous avons implémenté dans Salut à Toi : on couple les commandes « ad-hoc » avec D-Bus. Pour ceux qui ne connaissent pas, D-Bus est un autre système de communication inter-processus qui a été développé par [[Freedesktop]] comme un standard commun dans les bureaux libres, en s'inspirant de l'existant et en particulier du [[DCOP]] de [[KDE]]. Il est donc très largement utilisé dans les logiciels libres, et permet de piloter beaucoup de logiciels courants.
En liant D-Bus et ad-hoc, SàT permet de créer très facilement une télécommande universelle, pilotable depuis n'importe quel client XMPP compatible (y compris sur votre téléphone, ce qui est particulièrement intéressant pour une télécommande), et en prime avec gestion des permissions par groupe.
Cette fonctionnalité est montrée dans le courte vidéo ci-dessous, on autorise les membres du groupe « coloc » à piloter une instance de VLC, pratique quand on fait une séance cinéma dans la colocation :).
Cliquez sur l'image ci-dessous pour voir la vidéo:
[![Télécommande universelle dans Salut à Toi](http://ftp.goffi.org/media/screencasts/posters/présentation_SàT_7_télécommande_universelle.png)](http://ftp.goffi.org/media/screencasts/pr%C3%A9sentation_S%C3%A0T_7_t%C3%A9l%C3%A9commande_universelle.webm)
Nous allons ajouter également la possibilité d’exécuter des scripts ou des commandes shell, on pourra ainsi très facilement autoriser tous les administrateurs d'un serveur à le redémarrer ou à avoir son statut.
Petite note sur le fonctionnement : les commandes ad-hoc, comme à peu près tout ce qui demande de la transmission d'informations typées dans XMPP, se basent sur les « Data Forms » (formulaires de données, [XEP-0004](https://xmpp.org/extensions/xep-0004.html)). Cette extension standardise donc les formulaires, et permet de demander des booléens, des mots de passes ou encore des listes de jids.
J'en profite aussi pour vous donner [le lien vers la conférence « PubSub, microblogage et XMPP »](https://rmll.ubicast.tv/videos/pubsub-microblogage-et-xmpp/) que j'ai faite aux RMLL il y a un peu plus de 2 semaines. J'y explique en 20 min les bases de PubSub et du microblogage dans XMPP, ainsi que l'intérêt des 2 XEPs que nous avons publiées (cf [ce journal](https://linuxfr.org/users/goffi/journaux/xmpp-et-micro-blogage-la-donne-a-change)). J'en reparlerai bien sûr dans un prochain article.
Bien qu'ayant plusieurs idées en tête, je ne suis pas encore décidé pour le prochain article, il est possible que je parle de PubSub, de copie de fichiers, de chiffrement de bout en bout, ou de tout autre chose…
menu-position: 3
title: Présentation d'idée : PGPID
authors: GaMa
date: 2013-07-23T00:59:56+02:00
license: CC by-sa
tags: reconnaissance
---
Bien le bonjour à toi journal (ainsi qu'à tes lecteurs),
Aujourd'hui, pour mon premier journal, je m'en vais vous présenter une idée qui me taraude depuis bien longtemps.
Vous vous en doutez, vous avez lu le titre, c'est de PGPID dont je vais vous parler.
Avant d'aller plus loin, je ne vais pas vous tromper sur la marchandise : Il y a pas de code, pas de soft à tester. C'est juste une idée jetée sur un clavier.
# Pourquoi PGPID #
On parle de plus en plus (ici en tout cas) de réseaux sociaux décentralisés.
Certains ne jurent que par eux (quid de la maitrise de ses données ?), d'autres sont plus circonspects (quid de la disponibilité ?).
Il existe de nombreuses solutions pour faire du réseau social plus ou moins décentralisé/a-centralisé/fédéré.
Les citer serait trop long, sans intérêt et ceux que j'oublierai se sentiraient exclus et se vexeraient. Alors, je ne le ferais pas :)
Ces solutions marchent bien mais, de mon point de vue, elles souffrent de deux problèmes communs :
- l'identification des utilisateurs.
- la localisation des machines fournissant un/des service(s) auprès des utilisateurs.
La plupart utilisent un identifiant d'utilisateur de la forme "utilisateur@fournisseur.tld" ou "fournisseur.tld/utilisateur"
Le problème de ces identifiants est qu'ils sont dépendant du fournisseur.
Ainsi :
- C'est le DNS du fournisseur qui permet de localiser la machine qui va bien.
- Pour deux services différents chez deux fournisseurs différents il y aura deux identifiants.
- Le jour où mon fournisseur ferme ou que je veux en changer, il me faut changer de fournisseur.
La solution couramment évoquée est d'avoir son propre nom de domaine. Honnêtement, j'y crois pas beaucoup. Malgré l'infinité de possibilité de nom de domaine, les domaines intéressants sont eux limités.
(Mon nom de famille est déjà pris par une société. Et même si j'aurai pu l'avoir il y a pas mal de monde qui a le même nom que moi).
Quant bien même, un tld intéressant serait disponible, il n'est pas donné d'en acheter un (vous voyez votre grand-mère aller sur un registar acheter "tante-Huguette.fr" ?).
Et les noms de domaine ont un sens. Les goûts et les couleurs changeant avec le temps, que faire de ce sens ?
Tous ces problèmes m'amène à penser que les noms de domaine ne sont pas une solution à long terme
(ça marche bien pour un nombre limité d'utilisateurs, pour 6 milliards de personnes c'est plus problématique)
On pourra cependant noter [RetroShare](http://retroshare.sourceforge.net/) (le seul que je connaisse) qui utilise une solution relativement (voir très) proche de celle présentée ici.
Il utilise une clé PGP pour identifier un utilisateur et une DHT pour identifier les adresses IP des machines.
La solution utilisée par RetroShare me semble bonne, elle est par contre dépendante de RetroShare.
La solution que je propose reprend celle de RetroShare, mais sous un axe global et indépendant des applications.
Il ne devrait pas être problématique de porter RetroShare sur PGPID.
Je vous invite à lire le très bon article de Stéphane Bortzmeyer (qui traine aussi ici) au sujet des url : http://www.bortzmeyer.org/no-free-lunch.html
# Présentation #
PGPID est donc une solution basée sur PGP, qui fournirait :
- un système entièrement a-centré d'identification et d'authentification des utilisateurs.
- un système d'association de machines à un utilisateur.
- un système bas niveau fournissant des services de base aux applications construites au-dessus.
Je vous préviens tout de suite, PGPID n'est pas une solution complète :
C'est une solution pour un réseau social au sens premier du terme. Il ne présume en rien des applications bâties dessus (même si j'en parle un peu).
C'est vous voulez un résumé en une phrase (et donc fausse) : PGPID est au réseau d'humain ce que IP/DNS est au réseau d'ordinateur.
Le principe de base est le suivant :
- L'utilisateur se crée une clé à chiffrement symétrique (PGP)
- La clé publique sert d'identifiant.
- Cet identifiant est mis dans une DHT.
- À un identifiant est associé un certain nombre de métadonnées dans la DHT.
- Pour éviter qu'un vilain pirate ne change vos données, l'ensemble des données est signé avec la clé associée.
- Une donnée principale (si ce n'est pas la seule donnée) est une liste de nœuds.
- Chacun de ces nœuds, lorsqu'ils sont interrogés, permettent de connaitre quel nœuds fournit quel services associés à la clé.
## Définitions ##
Bon, c'est très loin d'être une spec, mais il faut bien avoir des noms clairs pour savoir de quoi on parle.
J'en conviens c'est un peu imbuvable à première lecture, mais n'arrêtez pas tous de suite, il y a des exemples après.
### Service
Fonctionnalité apportée par une application (le plus souvent cliente).
Un service peut être :
- Un fournisseur d'adresse de machine et des services associés.
- Une application de messagerie instantanée.
- Un serveur web.
- Un service de notifications
- Un service d'échange de fichiers
- Un serveur mail.
### SN (Service Name)
Le nom d'un service.
### PGPID
L'identifiant d'un compte. C'est le fingerprint de la clé PGP.
### PGPIDC
PGPID content
La clé publique complète PGP.
### SPN (ou Node)
Service Provider Node.
Une machine fournissant un ou plusieurs services.
### NDS
Node discovery service
Un service particulier qui permet d'obtenir une liste de SPN associé à une PGPID.
### NDN
Node discovery node (Noeud d'aiguillage).
Un SPN fournissant NDS.
Ce sont ces nœuds qui l'on met dans la DHT.
Le NDS n'étant qu'un service particulier, le NDS du NDN doit inclure le NDN dans la liste.
### SDS
Service discovery service
Un service fournissant la liste des services associés à un PGPID fournit par le SPN.
Chaque SPN doit avoir un SDS
### TS
Table service
Service fournissant la partie DHT (stockage/recherche des clés)
### TN
Table node
Un SPN fournissant TS
### FPGPID
Full PGPID. Il est de la forme : \<PGP fingerprint\>[@\<SPN\>][:\<SN\>]
Il permet d'identifier jusqu'à un service particulier d'une machine particulière d'un utilisateur.
# Identification #
L'identifiant de l'utilisateur est le fingerprint de la clé PGP.
Chaque utilisateur peut potentiellement avoir plusieurs nœuds fournissant des services. Ces machines sont identifiées par : ID@SPN
Ici, SPN est un nom choisi arbitrairement par l'utilisateur. Ça peut être «maison», «pc», «portable», ...
Ceci peut être comparé au ressource dans les xmppid.
Chaque service à un nom, (plus ou moins standardisé). C'est l'équivalent des ports.
Ainsi un service mail pourra être adressé avec l'identifiant : ID@maison:mail
De même un service de messagerie instantané sur téléphone sera adressé avec : ID@phone:im
# Use Case #
## Inscription ##
Alice souhaite s'inscrire (si on peut appeler ça s'inscrire) sur PGPID.
1. Elle lance son programme et crée une paire de clés PGP.
1. Elle contacte un TN connu et lui envoie sa PGPIDC.
1. Le TN se charge de diffuser sa PGPIDC dans la DHT.
Alice a maintenant une «identité» sur PGPID
## Identification sur les sites web ##
Son navigateur web étant configuré, lorsque Alice navigue sur un site supportant l'identification PGPID, elle est automatiquement identifiée.
1. Échange d'information entre le navigateur et le serveur web pour s'informer qu'ils supportent l'identification PGPID
1. Le serveur envoie un défi au navigateur
1. Le navigateur chiffre le défi (avec éventuelle confirmation d'Alice)
1. Le serveur récupère le PGPIDC d'Alice en contactant un TN.
1. Le serveur vérifie le chiffrement du défi et Alice est authentifiée.
Aucun mot de passe ne transite et n'est fourni à aucun serveur.
## Participation au réseau PGPID ##
Alice souhaite participer au réseau en installant un TS sur sa machine.
1. Elle installe un TS sur sa machine.
1. Elle contacte un TN et enregistre sa machine en tant que nouveau TN.
1. L'adresse IP:port du TS sont propagés dans la DHT.
1. Son TN commence à recevoir des PGPIDC à stocké et des requêtes de PGPID.
## Installer et fournir de nouveaux services ##
Pour pouvoir fournir des services la machine d'Alice doit devenir un SPN
1. Alice installe un SPS. Sa machine devient donc un SPN
1. Pour que son SPN puisse être contactée Alice doit enregistrer son SPN auprès d'un NDN.
1. Elle décide d'utiliser le NDN de «la Société À la Mode sur Internet»
1. Elle contacte donc le NDN et y enregistre son SPS (adresse IP du SPN et port du SPS)
1. Alice rajoute l'adresse IP du NDN et de port du NDS aux métadonnées associées à son PGPID, les signes et les envoie sur un TN connu (probablement le sien)
1. Son SDS est configuré pour indiquer que le SPN fourni les services SDS (obligatoirement) et TS (puisque c'est aussi un TN)
## Installer un service de messagerie instantané (IM) ##
1. Alice a installé un service de messagerie supportant le protocole PGPID
1. Alice configure son SDS pour qu'il indique aussi que son SN fourni le service IM
## Communiquer avec Bob ##
1. Alice rentre le PGPID de Bob dans son logiciel IM
1. son logiciel contacte un TN, demande le PGPIDC de Bob et la liste de NDN.
1. le logiciel contacte le(s) NDN et demande au NDS une liste de SPN correspondant au PGPID de Bob
1. le logiciel contacte le(s) SPN et demande au SDS la liste des services fournit.
1. si le service IM est dans la liste, on a trouvé le SPN fournissant le service IM
1. le logiciel d'Alice contacte le logiciel de Bob sur le bon SPN
1. Une authentification a lieu (défi, chiffrement, déchiffrement)
1. La communication commence
## Avoir un deuxième SPN ##
Alice a un portable, elle souhaite installer un logiciel IM pour discuter à partir de celui ci
1. Alice installe un SPS sur son portable
1. Alice configure le NDS pour qu'il retourne aussi l'adresse de son portable.
1. Bob peut contacter Alice aux adresses :
* \<Alice PGPID\>. Le SPN contacté dépendra de l'ordre de priorité configuré dans le NDS.
* \<Alice PGPID\>@pc
* \<Alice PGPID\>@portable
## Idées de service possible ##
* vcard. service fournissant des informations complémentaires sur l'utilisateur (adresse, avatar, ...). Le service vcard (comme tous les autres services, y compris NDS et SDS) peut fournir des informations différentes selon le demandeur.
* service web.
* réseaux sociaux
* échange de fichier
* sauvegarde de données. PGPID1@pc peut envoyer des données à PGPID2@pc/backup. Permet de sauvegarder automatiquement des données chez d'autres personnes et vice versa (échange de bon procédés)
* synchronisation de données entre les machines d'une même personne. (entre PGPID1@pc et PGPID1@portable)
# Utilisation avancée #
## Avoir plusieurs NDN ##
Alice a aussi un téléphone portable. Elle souhaite l'utiliser, ainsi que son pc, comme NDN. Le téléphone servant de NDN de secours lorsque son pc est éteint.
De plus elle souhaite aussi s'en servir pour faire de la IM.
Elle installe donc :
+ sur son pc
- un NDS qui liste son pc.
- un SDS qui liste les services disponibles sur son pc
+ sur son téléphone portable
- un NDS qui liste son portable.
- un SDS qui liste les services disponibles sur son portable (IM)
+ dans la DHT
- l'adresse de ses deux NDS, le NDS du pc ayant une plus grande priorité.
## Itinérance ##
Bob a un accès internet avec une adresse IP dynamique.
Pour éviter que la DHT soit mise à jour trop souvent, Bob utilise un NDN ne lui appartenant pas qui lui a une adresse fixe.
Celui-ci sert de relais vers son adresse dynamique.
Son SPN contacte régulièrement les NDN qui le référencent pour qu'ils mettent à jour leurs informations. (équivalent des services dynDNS)
C'est d’ailleurs la raison d'être des NDN (au lieu de mettre directement les SPN dans la DHT) : Avoir des SPN dynamiques et utiliser les NDN (fixe) qui servent «d'aiguillage». Le tout sans remettre à jour la DHT trop souvent.
## Résilience des données ##
Alice a fait un blog. Pour cela elle utilise le service blog sur son pc.
Son PC n'est pas toujours connecté mais Alice souhaiterais que ses informations soient toujours disponibles.
Elle s'arrange avec Bob. Lorsque Alice écrit un article, elle le publie sur son pc mais aussi sur une machine de Bob.
Elle configure son NDN pour qu'il retourne le SPN de Bob.
Bob de son côté configure son SPN pour répondre aux requêtes au sujet d'Alice.
Lorsque Charles veut lire les articles d'Alice il se contacte à son NDN. Si le SPN d'Alice est connecté il va lire l'article dessus.
Sinon il se connecte au SPN de Bob pour accéder à l'article.
Les données venant d'Alice devant être signé par la clé privée d'Alice et Bob ne pouvant en aucun cas y accéder (à la clé privée), il faut qu'Alice signe ses articles à l'avance.
Il ne peut donc pas y avoir de contenue dynamique hébergé chez un tiers. (Sauf à mettre en place un protocole de délégation des signatures/réseau de confiance avancé)
Alice, Bob et Charles peuvent aussi se mettre d'accord pour louer un serveur et mettre en place un NDN/SPN commun.
# Conclusion #
Je pense que vous avez le compris le principe et je laisse votre imagination débordante trouver de nouveaux cas d'utilisation.
J'aimerais pourtant revenir sur quelques points :
- PGPID se veut neutre quant à son utilisation. Il est tout à fait possible de créer des services a-centrés comme des totalement centrés autour d'une seule entité. Dans les deux cas, l'utilisateur à un identifiant unique. Son réseau personnel et ~~ses~~ son identifiant restent identique, quel que soit son hébergeur du moment.
- Pour fonctionner, un système de ce genre n'a pas besoin d'être très étendu et utilisé. Un bout de serveur toujours allumé dans un coin pour faire office de TN de référence. PGPID peut même être utilisé «en solo» par un seul utilisateur qui s'en servirait pour identifier ses machines.
- Pour fonctionner à grande échelle (comprendre madame Michu), il faut que les outils soient le plus simple possible.
Il faut donc imaginer que :
- Le TN de référence soit connu des outils, s'inscrire doit revenir à appuyer sur un bouton et rentrer son mot de passe.
- Il soit possible de faire des recherches de personnes et ainsi retrouver ses contacts.
- On utilise des QRCode et autres NFC. Il me suffit de scanner le QRcode d'un ami avec mon téléphone intelligent pour l'ajouter.
Quoi qu'il en soit, il faut voir ce qui est décrit plus au comme un draft. J'insiste sur le fait que c'est très loin d'être une spec (vous vous en serez rendu compte de vous-même). Beaucoup de choses peuvent changer et c'est en partie pour ça que j'en parle. Qu'est-ce que vous en pensez ? C'est l'idée ou la fausse bonne idée du siècle ? Je mérite le Turing Award ou la fosse commune ? Ou un peu entre les deux, voir les deux ?
# Conclusion bis (aka vaporware) #
Alors, c'est cool, vous voulez vous y mettre. Et vous vous demandez : "Quand est-ce que ça sort ?"
Et bien je vous répondrai : À moins que ma boite veuille copier google et m'offrir 20 % du temps pour des projets perso, ça mettra longtemps avant d'arriver.
J'ai déjà d'autres projets perso en cours et, hélas, mon temps libre a des limites. J'ai bien écrit deux bouts de code en python qui s'échangent des clés PGP mais c'est loin d'être utilisable et je ne sais absolument pas quand ça le sera...
Ça y est, j'ai terminé. C'est à vous d'écrire maintenant : à vos commentaires !!
menu-position: 4
title: Red Hat Enterprise Linux 6.7
title-style: pure-u-1 pure-u-md-1-2
authors: Nils Ratusznik
Yvan Munoz, BAud, palm123, Nÿco, patrick_g, eggman, Stéphane Aulery et Benoît Sibaud
date: 2015-05-06T10:17:16+02:00
license: CC by-sa
tags: hat, red, redhat, rhel6 et rhel
---
Red Hat a annoncé le 22 juillet dernier la version 6.7 de Red Hat Enterprise Linux (RHEL), distribution commerciale destinée aux professionnels et aux entreprises. Pour rappel, RHEL 6 existe depuis novembre 2010 et, même si RHEL 7 est disponible depuis le mois de juin 2014, cette version est toujours maintenue.
![RHEL 6](http://www.sistina.com/g/rhel/rhel6/RHEL6_logo.png)
Cette version 6.7 apporte malgré tout des améliorations, principalement du côté de l'authentification centralisée et de la virtualisation. Red Hat avait annoncé la version bêta près de 3 mois auparavant, soit le [6 mai dernier](https://www.redhat.com/en/about/blog/red-hat-enterprise-linux-67-beta-now-available).
Une sélection des nouveautés se trouve en deuxième partie de dépêche.
----
[Red Hat](http://www.redhat.com)
[DLFP : Red Hat Enterprise Linux 7.1](http://linuxfr.org/news/red-hat-enterprise-linux-7-1)
[DLFP : Red Hat Enterprise Linux 6.6](http://linuxfr.org/news/red-hat-enterprise-linux-6-6)
[DLFP : Red Hat Enterprise Linux 5.11](http://linuxfr.org/news/red-hat-enterprise-linux-5-11)
[Annonce de RHEL 6.7 sur le site de Red Hat](http://www.redhat.com/en/about/press-releases/red-hat-joins-platform-stability-and-open-innovation-latest-version-red-hat-enterprise-linux-6)
[Notes de version](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/6.7_Release_Notes/index.html)
[Notes techniques](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/6.7_Technical_Notes/index.html)
----
# Authentification et interopérabilité
Ces deux thèmes sont souvent regroupés ensemble, car c'est l'un des axes de travail de Red Hat ces derniers temps, semble-t-il : améliorer la compatibilité avec les solutions Microsoft. Pour RHEL 6.7, c'est l'authentification qui est concernée, en particulier côté [SSSD](https://fedorahosted.org/sssd/) (composant d'authentification centralisée), qui gagne non seulement la possibilité d'utiliser un UPN (User Principal Name) comme identifiant pour s'authentifier sur un système, mais aussi d'utiliser les GPO (Group Policy Objects) stockées dans un annuaire Microsoft Active Directory (abordé dans [RHEL 7.1](//linuxfr.org/news/red-hat-enterprise-linux-7-1#authentification-et-interop%C3%A9rabilit%C3%A9)).
Moins orientée Microsoft, une autre amélioration de SSSD concerne la notification d'expiration des mots de passe : celui-ci est maintenant capable de signaler qu'un mot de passe a expiré même si l'authentification a eu lieu sans mot de passe. Cela peut par exemple être le cas lors d'une connexion SSH par clé.
# Haute-disponibilité
Le chapitre haute-disponibilité comporte deux nouveautés intéressantes : la première concerne `Pacemaker`, qui est maintenant capable de prendre en compte le serveur web Nginx en tant que ressource. Il est donc possible d'utiliser Nginx en configuration haute-disponibilité entièrement "à la Red Hat".
La deuxième nouveauté concerne le _fencing_, qui permet de cloisonner une ressource indisponible, parfois en effectuant un redémarrage électrique du serveur hébergeant la ressource en question. Plusieurs nouveaux agents apparaissent dans RHEL 6.7, mais l'un d'entre eux concerne le module [iLO de Hewlett-Packard](http://en.wikipedia.org/wiki/HP_Integrated_Lights-Out) : _fence_ilo_ssh_. Plus besoin de se connecter à l'OS pour redémarrer le serveur !
# Développement
Bien que cette dépêche ne contienne pas de section sur le matériel, la première nouveauté sur le développement concerne du matériel, en particulier les processeurs Intel. Les dernières générations (certains Core, Pentium et Celeron, ainsi que les Xeon v3) disposent en effet d'une fonctionnalité nommée PAPI (Performance Application Programming Interface), dorénavant prise en charge par RHEL 6.7
La bibliothèque C a été améliorée pour éviter un crash durant un diagnostic, ce qui empêche une application de planter pendant l'affichage des informations après une corruption mémoire par exemple.
SystemTap passe en version 2.7 ! Cette mise à jour contient de nombreuses améliorations, comme l'activation et la désactivation à la volée de sondes, la prise en charge de multiples scripts, ainsi que des nouvelles sondes.
Du côté d'OProfile, c'est le _memory mapping_ qui est amélioré, dans le cas d'utilisation de _huge pages_ dans du code Java JIT.
# Environnement de bureau
Le paquet scap-workbench fait son apparition dans RHEL 6 ! Déjà présent dans RHEL 7, cet outil graphique (Qt 4) facilite le test d'une machine pour vérifier sa conformité à des pratiques de sécurité définies via OpenSCAP.
Côté performances, PCP (Performance Co-Pilot) a été mis à jour en version 3.10.2. Cela apporte entre autres de nouvelles métriques noyau (mémoire, vCPU, device mapper, NFS 4.1, cgroups), mais aussi la prise en charge de Python 3 et d'extensions d'API en Python. On notera aussi la compression des archives journalières au format [xz](https://fr.wikipedia.org/wiki/XZ_%28format_de_fichier%29).
# Stockage
⁠ De nouvelles options ont été ajoutées à UDEV, permettant aux administrateurs d'écrire plus facilement des règles de montages, comme par exemple monter les clefs USB en lecture seule.
Ajout de `iscsi.safe_logout`, empêchant toutes tentatives de déconnexion d'une session ISCSI, lorsque des disques de ce type sont montés.
De nombreuses commandes LVM acceptent la sélection de critères, combinaison entre des opérateurs de comparaison `= != >` (..), des opérateurs logiques `&& ||` (..) et des opérateurs de groupes `[ { (` (..) Le « Guide de l'Administrateur LVM » a été [mis à jour](http://man7.org/linux/man-pages/man8/lvm.8.html) ([ici](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Logical_Volume_Manager_Administration/index.html) en version beta) en conséquence.
Toujours à propos de LVM, la fonctionnalité de cache est dorénavant pleinement prise en charge : elle permet d'utiliser un stockage petit mais rapide en tant que cache pour un disque plus grand et certainement plus lent. La note technique renvoie vers la page de manuel de [lvmcache(7)](http://man7.org/linux/man-pages/man7/lvmcache.7.html) pour plus d'informations.
Multipath suit la tendance en permettant maintenant de découper sa configuration en plusieurs fichiers précis. L'option _config\_dir_ est disponible dans le fichier central de configuration, permettant de définir un dossier dans lequel tout les .conf seront pris en compte.
L'attente par défaut de 300s avant que Multipath ne prenne en compte une inaccessibilité matérielle peut donner une impression de service défaillant. Les options "delay_watch_checks" et "delay_wait_checks" ont été ajoutées, empêchant ainsi les matériels qui bagotent d'être ré-utilisés immédiatement à leurs retours en ligne. Les vérifications de délais "watch" & "wait" permettent de définir des seuils avant de déclarer ces matériels revenus en ligne comme réellement fiables et utilisables.
# Virtualisation
Les machines virtuelles KVM utilisent l'outil *kvm-clock* comme source de temps pour synchroniser leur horloge avec celle de l'hyperviseur après une veille prolongée. Dans ce cas, les machines virtuelles RHEL 6 avaient quelques difficultés à se synchroniser correctement. En conséquence, *kvm-clock* a été mis à jour pour que cette synchronisation soit plus fiable.
Dans le jeu de celui qui en fait le plus, KVM est maintenant capable de gérer 240 processeurs virtuels (vCPU) par machine virtuelle.
Cette nouvelle version de RHEL 6 est bien entendu disponible en tant qu'image à déployer comme conteneur ou comme machine virtuelle. L'annonce ajoute que les hôtes certifiés pour cela sont Red Hat Enterprise Linux 7, Red Hat Enterprise Linux Atomic Host, et OpenShift Enterprise 3.
# Noyau
Certaines versions de gcc, ainsi que le code nécessaire à la virtualisation, pouvaient dans certaines circonstances générer de trop grandes trames, et engendrer, en combinaison avec d'autres facteurs, des plantages. La pile du noyau a été étendue à 16 ko pour tenir compte d'exigences plus élevées de certaines de ces fonctions.
On peut aussi remarquer la correction d'un problème dans le gestionnaire de ressources de mémoire : MEMCG pouvait conduire à des impasses dans des conditions OOM (out of memory). Ceci pouvait être utilisé pour bloquer le système, lorsque celui-ci est en condition OOM, en lançant de nombreux processus au sein d'un _cgroup_ restreint en mémoire.
L'utilitaire `perf` a été rétroporté dans sa dernière version, Red Hat 6.7 propose ainsi la même version 3.16 que le projet en amont, incluant toutes les améliorations et corrections des versions 3.13, .14 & .15. Les administrateurs & développeurs peuvent consulter le [« _Performance Tuning Guide_ »](https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide/index.html#s-analyzperf-perf) mis à jour.
This diff is collapsed.
This diff is collapsed.
#layout {
/* position: relative;*/
}
#content {
margin: 1em;
}
.index-entry {
}
.index-entry a {
color:inherit;
text-decoration: none;
}
.index-entry .content {
border: solid black 1px;
margin: 1em;
padding: 2em;
height: 100px;
text-align: center;
background: #3c6eb4; /* fedora blue */
color: white;
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
<title>poole - {{ hx(page["title"]) }}</title>
<meta name="description" content="{{ hx(page.get("description", "a poole site")) }}" />
<meta name="keywords" content="{{ hx(page.get("keywords", "poole")) }}" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/pure-min.css">
<!--[if lte IE 8]>
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/grids-responsive-old-ie-min.css">
<![endif]-->
<!--[if gt IE 8]><!-->
<link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.6.0/grids-responsive-min.css">
<!--<![endif]-->
<link rel="stylesheet" href="style.css" />
<link rel="stylesheet" href="menu.css" />
</head>
<body>
<div id="layout">
<div id="menu">
<div class="pure-menu">
<a class="pure-menu-heading" href="">{{ hx(page["title"]) }}</a>
<ul class="pure-menu-list">
<!--%
mpages = [p for p in pages if "menu-position" in p]
mpages.sort(key=lambda p: int(p["menu-position"]))