Apache2: séparation des privilèges avec php-fpm (et ACL)

Pour pouvoir configurer différents sites sur un même serveur avec des données cloisonnées (en particulier, les fichiers de configurations), il faut modifier la gestion des fichiers PHP par Apache.

Par défaut, Apache utilise un module nommé mod_php pour exécuter les scripts PHP des applications web sur le serveur. Avec ce module, tous les scripts PHP sont exécutés par l’utilisateur Apache (www-data sous Debian). Grâce à ce fonctionnement, l’installation des applications web est très simple (la gestion des droits se résume à www-data), mais un script malicieux peut accéder aux fichiers des autres applications web hébergées sur le même serveur, puisque tous ces fichiers doivent être lisibles par le même utilisateur, www-data.

Grâce au blog de Remi Collet et sa présentation Oublions mod_php, j’ai découvert que PHP propose nativement un serveur dédié à l’exécution des scripts php, php-fpm, et qu’il est assez aisé de configurer Apache pour l’utiliser en lieu et place de mod_php.

L’utilisation du serveur php-fpm permet de gérer l’exécution des scripts par différents utilisateurs selon l’origine de la demande de l’exécution. En effet, le serveur php-fpm gère un pool de processus d’exécution des scripts PHP et il est capable pour chacun de ces processus de définir le répertoire d’exécution et l’utilisateur (avec le groupe) qui exécutera les scripts.

Par exemple, j’ai configuré sur mon serveur un pool PHP par application pour Movim, ownCloud et Zerobin. J’ai donc créé un utilisateur (et un groupe) movim, owncloud et zerobin. J’ai ensuite mis ces utilisateurs/groupes comme propriétaires de leur dossier d’application respectif. Puis j’ai configuré les différents pools PHP et maintenant l’application mMvim ne peut plus accéder à mes données ownCloud et Zerobin.

Ce qui est également intéressant, c’est que l’utilisation de php-fpm permet de définir combien de processus doivent rester actifs pour chaque application et s’il faut les éteindre après exécution. Par exemple, j’ai configuré ownCloud pour toujours avoir 5 files d’exécutions de disponible et ZeroBin pour ne démarrer que lorsque l’application est utilisée. Ainsi, mon serveur ownCloud sera un peu plus réactif (les processus ne s’éteignent pas tout le temps) et mon ZeroBin ne consommera pas de ressources pour rien (puisque les processus s’éteindront pour lui justement).

Mais il me restait un problème : comme j’utilise un utilisateur et un groupe spécifique par application (par simplification de la gestion des droits), j’ai de fait empêché l’utilisateur Apache d’accéder aux dossiers des applications. Or, bien qu’il ne gère plus les scripts PHP, il doit encore servir tout le reste (javascripts, CSS, HTML, images…).

Je ne voulais pas simplement ajouter l’utilisateur Apache dans chacun des groupes, puisque ceci reviendrait à autoriser Apache à accéder aux fichiers de configurations des scripts PHP qui n’ont pas besoin d’être connus par Apache.

Grâce au blog System-Linux.eu, j’ai découvert que la gestion des ACL est assez aisée sous Linux (quelle chance que ces deux articles apparaissent dans mes flux la même semaine :)). ACL (pour Access Control List) est une extension POSIX qui permet de définir des droits d’accès aux fichiers pour une liste d’utilisateurs et de groupes au lieu d’un unique groupe et un unique utilisateur. Ainsi, plutôt que de me prendre la tête à créer des groupes complexes (comme un groupe movim-www-data, par exemple), il me suffit d’ajouter l’utilisateur www-data en lecture aux fichiers autres que les scripts PHP (en évitant les fichiers de configuration utilisés uniquement par PHP).

En définitive, et si je ne me suis pas trompé dans mes configurations, les applications web installées sur mon serveur ont leurs scripts PHP exécutés de manière plus sereine. Chaque application exécute ses scripts avec ses droits et ne peut plus accéder aux dossiers des autres applications. Les fichiers statiques sont tous distribués par le même utilisateur Apache, mais ça ne me pose pas de problèmes, puisque ces fichiers ne sont pas exécutés par mon serveur (ils sont juste transmis aux navigateurs web). Enfin, je n’ai plus besoin de créer de règles Apache pour interdire la lecture d’un fichier de configuration par un client, puisqu’il me suffit de ne pas donner les droits de lectures sur ces fichiers à Apache.

Je pense également que cette solution est bonne pour éviter qu’un éventuel script PHP « virus » envoyé sur mon serveur fasse trop de dégâts, puisque ses accès aux dossiers du serveur seront très limités (comme mod_php est désactivé, mon serveur Apache n’exécute plus de scripts sur mon serveur, ce que je trouve beaucoup plus sain : le serveur web se limite à servir les contenus sans exécution :)).

À noter, que sur mon ancien serveur, abra, j’avais testé le module mpm_itk pour Apache. Celui-ci permet de dire à Apache de gérer chaque application avec un utilisateur différent (donc pour chaque VirtualHost, on peut définir un utilisateur). Seulement, cette solution a le désavantage d’obliger l’exécution d’Apache en tant que root pour qu’il puisse ensuite changer l’utilisateur de son processus. Ce qui signifie donc que s’il existe des bugs d’Apache sur les codes exécutés avant le changement d’utilisateurs (comme la gestion TLS par exemple), j’exposais directement l’utilisateur root sans avoir besoin de trouver un moyen de monter ses privilèges (ce problème est clairement indiqué sur le site du projet mpm_itk).

Flattr this!

Hint: FusionForge and git

I’m trying to do a build environment to patch QtMoko and compile it with a bit of automation.

As described in a previous post, I’ve migrated from Redmine to FusionForge and I found that I were not able to clone my QtMoko fork with an authenticated user (but I was able to do it with anonymous access in the builder virtual machine).

I’ve checked what happens on my server while cloning and I’ve seen that my FusionForge user were trying to do a git-upload-pack by ssh but it didn’t consume neither CPU nor RAM nor I/O disks. Very strange…

Thanks (again) to the StackOverflow community: that question wasn’t really related to my issue, but it helped me to understand it: my FusionForge user wasn’t able to finish the login process on my server through SSH. I’ve changed my FusionForge setting (with the admin logon) from zsh to dash (the default Debian shell) and this time the user was able to connect without issue and git-clone worked well too.

Flattr this!

Le danger des ondes électromagnétiques

Un article qui me semble plein de bon sens à propos des ondes électro-magnétiques : Compteurs intelligents, ondes dangereuses et électrophobie.

Je trouve particulièrement intéressant l’argument sur la nature des ondes utilisées pour les appareils dont la peur est la plus présente : la lumière serait en effet plus forte que nos téléphones mobiles, wifi,…

Je vous invite également à parcourir les autres articles du pharmachien: son site est très intéressant pour se forger des avis un peu plus éclairés à propos des différents préjugés et peurs communes sur les utilisations industrielles des sciences modernes (en particulier dans le domaine de la santé).

Flattr this!

Passage de Remine à FusionForge

Hello,

Suite à quelques problèmes avec la mise à jour de Redmine, j’ai pris la décision de ne plus utiliser cette forge et d’accepter d’utiliser le serveur git inclus dans une forge à la place de gitolite.

Jusqu’à maintenant, j’utilisais Redmine avec mon serveur git gitolite grâce au plugin redmine-git-hosting qui permet d’intégrer facilement les deux services ensemble. Cependant, comme j’utilise Debian Jessie sur mon serveur, j’ai commencé à avoir des problèmes lors de mise à jour de Debian. En effet, pour installer le plugin, j’ai dû utiliser des gems de Ruby externes à Debian ce qui complexifie la gestion des mises à jour puisque 2 systèmes de gestion des dépendances essaient de coexister (dpkg de Debian et les gems de Ruby).

Je me suis donc résolu à installer une nouvelle forge et utiliser son propre serveur git pour gérer les dépôts. J’ai regardé du côté de GitLab, une forge git moderne qui tente de concurrencer Github, mais ils annoncent clairement que la puissance de mon serveur ne suffira sûrement pas et ils ne fournissent pas de support 32 bits directement. En plus, comme je venais d’avoir des déboirs avec Ruby, j’ai préféré passer mon chemin.

En cherchant, je me suis rappelé d’une nouvelle sur LinuxFr annonçant la sortie de FusionForge 6.0.3 cet automne. J’ai relu l’article et je me suis dit que cet outil pourrait correspondre à mes besoins, surtout qu’elle a le bon goût d’être empaquetée dans Debian, d’utiliser les paquets déjà existant (comme mediawiki) et d’être écrit en PHP/PostgreSQL.

Je l’ai donc installée sur le domaine https://projects.adorsaz.ch/ et j’ai fait l’erreur d’exécuter la fin de la procédure d’installation après avoir parcouru trop rapidement les fichiers de configuration dans /etc/fusionforge. Après avoir pris le temps de parcourir comme il faut leur wiki et d’adapter les fichiers de configuration, j’ai réussi à avoir un outil qui correspond à mes besoins.

FusionForge est vraiment très intéressant comme projet du fait qu’il ne développe que ce qui lui est nécessaire pour la gestion des comptes et projets : il a le bon goût de ne pas réinventer la roue et d’intégrer les outils libres déjà existant. Par exemple, le moteur de wiki que j’ai choisi est MediaWiki, le navigateur de source est simplement git-web, … Ce qui est plus surprenant par contre, c’est qu’il s’intègre également très fortement dans le système d’exploitation : le modèle de gestion des comptes utilisateurs, par exemple, provient du modèle Unix et utilise libnss-pgsql pour gérer les accès aux projets et accès ssh grâce aux comptes directement défini dans la base de donnée de la forge.

Maintenant que j’utilise directement les paquets de Debian sans dépendance extérieur, je peux faire mes mises à jour sans craindre d’une perte de service. Merci aux mainteneurs de Debian qui font du bon boulot et aux logiciels libres d’avoir le bon goût de permettre de changer de logiciel facilement, de ne pas verrouiller mes données et de promouvoir l’utilisation d’outils existants 🙂


Pour la configuration de FusionForge, voici quelques points dont je me souviens:

  • Comme j’installe fusionforge dans un sous-domaine, je lui ai
    demandé de ne pas créer automatiquement des sous-sous-domaines. Je
    suis auto-hébergé avec un certificat *.adorsaz.ch, autant en profiter
    pour créer des sous-domaines à la pelle, en plus ça m’évite des
    problèmes avec un certificat qui n’est pas définit pour
    *.projects.adorsaz.ch. En plus, ça simplifie la configuration du serveur de nom de domaine (en particulier pour les entrées MX).
  • Il faut être à l’aise avec les configurations des hotes virtuels apache2 pour modifier les template de configuration de FusionForge.
  • Il faut être aussi à l’aise avec exim4 pour s’assurer que la configuration automatique de FusionForge ne casse pas votre serveur mail.
  • Il faut penser à mettre à jour les noms de domaines (CNAME et entrées MX) dans bind afin de rendre publique les pages d’accueil des projets publiques et rendre utilisable la gestion des emails.

Flattr this!

Décontamination d’un PC sous Windows 7

La machine était tellement vérolée, que la récupération des données du disque depuis une autre machine puis la réinstallation aurait été la meilleure solution.

Mais, la machine possédait comme OS un Windows 7 OEM. Ce qui signifie plusieurs choses:

  • Si vous n’avez pas le CD de réinstallation du vendeur de la machine, vous ne pouvez pas relancer une installation propre.
  • Si vous n’aviez pas pensé à créer un CD de récupération et une image du système lorsque vous l’avez reçu, vous ne pourrez pas revenir sur un OS dans un état sain.

Bien sûr, en prenant la machine chez moi, j’ai oublié de demander au propriétaire s’il possédait un de ces 2 CDs et s’il avait un point de restauration sur un disque. La prochaine fois j’y penserai, même si la réponse sera sûrement négative.

Ayant parcouru le web pour voir si Microsoft fournissait des images officielles de Windows 7, j’étais surpris de voir que c’était le cas, mais uniquement pour des licences non-OEM (et pour combien de temps ?). En lisant quelques postes sur le web, l’argument serait que le revendeur de la machine est le seul à pouvoir fournir un CD de réinstallation, car c’est le seul moyen de se retrouver avec un Windows complètement utilisable: le revendeur peut modifier l’image de Windows original pour inclure les drivers spécifiques à la machine.

Avec cet argument, j’ai donc l’impression que le revendeur ne fournirait pas un CD d’installation de Windows, mais un CD de récupération avec une image système déjà prête. Si quelqu’un a demandé à son revendeur un tel CD, ce serait bien de confirmer.

Ce genre de texte me confirme que le débat de la séparation de la vente de la machine et du système d’exploitation est très importante, même pour Windows: si Windows n’était pas pré-installés, j’aurais pu avoir un lien directement avec Microsoft pour télécharger un CD d’installation légalement et en plus, ceci m’aurait assuré que les drivers spécifiques de la machine soient soit fourni sur un CD avec la machine (finalement, comme pour les imprimantes, les APN,…) soit directement téléchargeable sur Internet.

En discutant de cette situation avec mon frère, il m’a proposé de télécharger Windows 10 puisqu’il est pour l’instant gratuit. Je ne sais pas si c’est possible avec une licence OEM et ce n’était pas une solution possible pour moi: un vieux logiciel de comptabilité doit fonctionner sur cette machine et la comptabilité devant être faite rapidement (dans le courant de la semaine), je ne pouvais pas perdre trop de temps avec ces essais. De plus la machine n’a que 2GB de mémoire vive et j’aurai du prendre du temps pour paramétrer Windows 10 pour que l’utilisateur ne soit pas trop perturbé et que ça compta ne fuite pas chez Microsoft (nous souhaitons nous débarrasser des virus justement pour garder la compta privée).

Permier réflexe, après avoir lu le journal LinuxFR sur la récupération de données d’un disque défectueux: copier à la main les dossiers et fichiers importants (il y en a peu, l’utilisateur n’ouvre ce PC qu’une fois par an pour sa compta). Ensuite, copie de toute la partition de 500GB avec Gnome Disque et contrôle que l’image soit lisible avec mount -o loop disque.img /mnt. J’ai pensé à copier en premier, malgré les virus, car je ne savais pas encore comment allait se passer la décontamination (c’est la première fois que je le faisais et je voulais être sûr de pouvoir au pire retomber sur un PC vérolé mais fonctionnel).

Ensuite, je remet le disque dans le PC d’origine et je le démarre sans connexion internet. Je vais voir si Windows a fait automatiquement un point de restauration avant d’installer les virus. Malheureusement ce n’était pas le cas, mais il y avait quand même une image faite avant l’installation de la majorité des virus. Je lance donc la restauration sur ce point, car certains virus étaient impossible à désinstaller depuis le gestionnaire d’applications et fonctionnalités.

J’essaie de désinstaller un maximum d’applications (navigateur Opera, un navigateur asiatique, quelques logiciels de publicités,…) à la main. En y réfléchissant, je n’aurai pas dû faire confiance à leurs désinstallateurs, puisqu’ils provenaient de la même source et qu’ils n’étaient donc pas de confiance. D’ailleurs certains logiciels étaient impossible à désinstaller avec la procédure standard (dont Opéra Oo). Mais je pensais naïvement que c’était Windows qui faisait la désinstallation quand on passait par le centre d’ajout/suppression de logiciels (comme j’en ai l’habitude avec les paquets Linux…).

Je profite aussi d’exécuter « msconfig » afin de vérifier si certains services étaient suspects et pour désactiver le démarrage automatique de certains logiciels. Évidemment, il y en avait quelques uns que j’ai désactivé à la main.

En cherchant un moyen de désinstaller les logiciels récalcitrants sur le web depuis mon PC sain, j’ai découvert deux logiciels : AdwCleaner (ps: pas sûr que ce soit le lien officiel) et RevoUninstaller. Je ne les ai pas exécuté tout de suite, je voulais faire une analyse du tout par un antivirus.

Depuis mon PC sain, sous Linux, je télécharge donc la version offline de l’antivirus Avast (l’exécutable fait une centaine de méga) et ces deux outils. J’ai pris Avast, car c’est le seul que j’avais déjà essayé et parce que j’avais vu en cours que même les antivirus gratuits (Avast y était cité) étaient capable de détecter un grand pourcentage de virus connus.

J’installe donc Avast sur le PC contaminé depuis ma clé USB et je lui demande de faire une première vérification du disque Windows. Évidemment, il m’a trouvé plein de virus, keylogger et fichiers douteux. Je demande à Avast de vérifier les deux exécutables d’AdwCleaner et de RevoUninstaller, puisque je ne suis pas sûr de pouvoir leur faire confiance. Avast ne semble pas trouver de problèmes connus avec ces outils, mais en réalité je sais qu’il est indécidable de manière complète si un logiciel est malveillant ou non (tout comme il est indécidable de savoir si un programme se termine ou non).

Je croise donc les doigts et je lance le RevoUninstaller pour désinstaller les logiciels que je n’avais pas réussi à désinstaller. Je commence donc par désinstaller Opera et je vois que RevoUninstaller fait tout à la main: il scanne la base de registre trouve les clés suspectes, propose de les supprimer. Ensuite il scanne le disque et propose aussi la suppression. Après ça, le gestionnaire d’installation de Windows me confirme bien que les logiciels douteux sont désinstallés.

Ensuite, j’exécute AdwCleaner et je lui demande de vérifier mon PC. Il fait une première passe et propose aussi de supprimer pas mal de choses: il scanne la base de registre, les fichiers et les services (et je crois même encore d’autres parties de Windows dont je ne me souviens plus). Il trouve encore pas mal de malware (dont les services que j’avais désactivé à la main) et demande un redémarrage pour appliquer les changements (ce qui m’a étonné, c’est qu’il peut faire une telle procédure sans être lui-même installé).

Ensuite, Je vois qu’il est possible de lui demander aussi de réinitialiser les navigateurs web (Internet Explorer, Firefox et Chrome). Je fais donc une seconde passe avec cette option cochée, ça va déjà mieux au moment de la détection.

Entre deux, Avast m’a averti qu’il vallait mieux faire une analyse du PC avant démarrage de Windows afin de vérifier et mettre en quarantaine un maximum de fichiers et services. Je ne savais pas qu’Avast était capable de faire ça, je lui demande de le faire et il trouve encore pas mal de fichiers suspects.

Au moment d’appuyer sur une touche pour confirmer la mise en quarantaine durant cette procédure, je me rend compte que le clavier ne fonctionne que lorsque Windows est démarré. Je trouve ça très étrange et je tente d’accéder au bios avec ce même clavier: c’est possible! C’est vraiment bizarre… je vérifie donc si une option du bios existe pour éviter ce problème: effectivement, on peut préciser que notre clavier est en USB et dans ce cas je peux faire mes sélections pour Avast sans avoir besoin de démarrer Windows.

Pendant qu’Avast faisait cette désinfection, je me suis souvenu que ClamAV existait aussi pour Windows. Par contre, quand je l’avais essayé je ne me souvenais pas d’avoir vu une fonctionnalité permettant l’exécution de ClamAV avant le démarrage de Windows. Je vérifierai sur mon PC pour être prêt pour que la prochaine décontamination soit un peu plus libre 🙂

Bon, j’ai l’impression d’avoir enfin un système plus sain et utilisable. Je branche le PC au réseau et fait encore une passe avec Avast après avoir mis à jour sa base de donnée virale, rien de nouveau n’est détecté.

Mais, comme le PC a été contaminé une fois, je ne peux pas être certain que tout est bon. Par contre je peux naviguer sur Internet Explorer sans avoir toutes les publicités et site porno qui se lancent au moindre clique.

Je lance donc la création du CD de restauration de Windows et je crée un point de restauration sur un disque externe (qui doit être en NTFS évidemment…).

Ma conclusion est que j’étais bien étonné de voir l’état du PC après avoir laissé 1-2 personnes l’utiliser cet été: il n’avait jamais eu de problèmes en 3-4 ans et là, il était devenu inutilisable. L’installation des logiciels depuis le web sans chaîne de confiance est donc une vraie plaie pour les utilisateurs normaux et un vrai bonheur pour les agences de publicités et de sociétés malveillantes.

J’avais essayé le Windows Store de Windows 8 il y a 1-2 ans pour installer mes logiciels, mais je n’y trouvait rien: ni Firefox, ni Libreoffice, ni Thunderbird,… Le travail d’empaquetage fait par les communautés des distributions Linux est donc une réelle plus value pour moi et je trouve vraiment dommage que Microsoft ne mette pas plus en avant son « store » pour proposer des installeurs Windows officiels.

Finalement, la prochaine fois que je devrai décontaminer un PC, je ferai les étapes suivantes:

  1. Demander au propriétaire s’il a un CD de réinstallation / restauration
  2. Démarrer le PC sans internet, récupérer le numéro de licence (j’avais dû attendre la fin de la copie du disque pour le faire…)
  3. Poser le disque dans un PC sous Linux, copier les fichiers importants à la main
  4. Faire une copie de la partition Windows (penser à l’OS et aux données)
  5. En attendant, télécharger Avast (installeur offline), AdwCleaner et RevoUninstaller
  6. Rebrancher le disque sur le PC
  7. Installer Avast et lui faire un scanne au démarrage du PC directement
  8. Exécuter AdwCleaner
  9. Si des logiciels non-voulus existent encore utiliser RevoUninstaller pour les désinstaller
  10. Créer un CD de resturation Windows si le PC semble suffisamment sain
  11. Créer un point de restauration sur un disque externe 11.

Flattr this!

IPv6 sur un réseau domestique / adorsaz.ch est disponible en IPv6

Il y a 6 ans, j’ai réalisé pour mon travail de maturité un document sur le passage de l’IPv4 à l’IPv6 (voir mon article sur LinuxFR) et j’avais commencé à tester l’installation d’un tunnel IPv6 sur une machine.

Dans mes tests, j’avais écrit ne pas avoir réussi à utiliser le protocole standard 6rd pour mon tunnel. Après avoir publié mon document sur LinuxFR, je me suis rendu compte qu’il fallait demander à SixXS de changer le type de tunnel pour le passer de dynamique (utilisation du protocole aiccu de SixXS) à statique (utilisation de 6rd).

Quoiqu’il en soit, grâce à mon document, j’ai pu facilement dire à mon routeur d’utiliser le tunnel IPv6 de SixXS (merci à NetGear d’avoir laissé la possibilité de changer le firmware pour OpenWRT et de même utiliser cette liberté comme argument de vente !).

Il me restait un problème : je n’arrivais pas à dire à mon routeur de fournir aux clients la connectivité IPv6 (à travers un sous-réseau aussi fourni par SixXS). Finalement, en lisant soigneusement le wiki de SixXS et celui d’OpenWRT, j’ai réussi à installer IPv6 sur tout mon réseau.

Je remercie d’ailleurs beaucoup OpenWRT, car il m’a permis d’utiliser le logiciel standard radvd pour configurer l’annonce du routeur sur le réseau et il m’a permis de conserver exactement les mêmes règles de Firewall pour les deux types de réseau.

PS: Oui, avec IPv6, les routeurs s’annoncent directement sur les réseaux et la configuration des clients est faite automatiquement grâce à ces annonces (le routeur s’annonce et donne une plage d’adresse disponible). D’ailleurs, pour configurer un client en statique, il suffit de 2 lignes dans la configuration des interfaces du client: l’adresse IPv6 voulue et le masque de sous-réseau.

Flattr this!

Le Hollandais Volant : [CSS] Quelques possibilités apportées par le modèle « flexbox »

J’en parlais récemment avec mon frère, les flexbox sont un outil CSS très intéressant qui permet d’éviter le « hack » de la création de menus avec des listes à puce. Le Hollandais Volant fait dans cet article un rapide tour des possibilités.

Pour plus de détails, j’utilise aussi le lien en anglais https://css-tricks.com/snippets/css/a-guide-to-flexbox/

Et si « Someone like you » ne pouvait être diffusé qu’en 2135 !

Incroyable ! Je crois que j’ai entendu l’introduction de la chanson Someone like you d’Adèle bien avant sa création ! J’écoute en effet depuis longtemps les morceaux d’Ehma, un artiste qui produit de belles pièces de piano et je viens de lire un article très troublant sur son site: Adèle et moi

Je n’aurai jamais pensé que les problèmes de licences libres et de droits d’auteurs puissent avoir autant d’importance en dehors de l’informatique… Imaginez que vous entendez une musique d’ascenseur quelque peu original, que des mois plus tard vous créez un morceau sans avoir reconnu l’influence de cette petite musique anodine et vous voilà devant la justice pour plagiat !

Notre monde a évolué trop vite pour le droit d’auteur: la culture se diffuse tellement vite, qu’il est impossible d’être toujours sûr de créer des choses originales (ça a toujours été le cas, mais la rapidité de diffusion accentue fortement ce problème).

De plus la culture est faite aujourd’hui par énormément de personnes (il n’y a plus uniquement des érudits qui ont fait de leur spécialité des études de lettres, de peintures, de musiques qui peuvent créer, l’art est à la portée de tous) et donc même si chacune de ces personnes ne créent qu’une œuvre, il faudra prendre le temps de toutes les évaluer pour contrôler que la sienne n’en est ni une copie ni une inspiration.

Ces constats ne datent pourtant pas d’aujourd’hui. Des personnes, comme Richard Stallman, s’étaient déjà rendues compte de ce problème pour les logiciels informatiques et c’est pourquoi il a crée des licences qui hackent le système du copyright : il a en effet utiliser le copyright pour obliger de rendre publique ses logiciels et ainsi faciliter la découverte de l’auteur originale d’une fonctionnalité.

J’avais déjà entendu parler de ces licences dites d’Art Libre et de Creative Commons, mais c’est aujourd’hui que je prend vraiment conscience de leur importance: aujourd’hui ce n’est plus une question de pouvoir écouter librement ce que je veux, quand je veux, où et comme je veux, mais c’est surtout de pouvoir créer librement et laisser aller ses sentiments sans avoir le soucis de se retrouver avec la justice sur le dos: en effet, même si je n’avais pas identifié une source d’inspiration et que celle-ci était sous licence Art Libre, il suffirait que j’adapte la licence de mon œuvre et que je cite l’auteur de l’œuvre originale pour corriger ce problème.

Je pense que nous sommes en effet bien loin de l’idée des majors qui accusent leurs consommateurs de vouloir tout à voir sans rien payer, mais nous sommes au point où il ne serait plus possible de créer la moindre œuvre si personne ne les rend facilement utilisable pour inspirer d’autres œuvres. Ce monde d’œuvres libres qui me semblaient jusqu’alors un monde alternatif est à mon avis la seule solution pour que notre culture soit toujours vivante et fructifiante.

Le titre de cet article provient de l’article d’Ehma à propos d’Adèle et de celui de Romaine Lubrique qui nous apprend que certaines œuvres cinématographiques créent en 1931 n’entreront dans le domaine publique qu’en 2086 ! (donc jusque là, les ayants droits pourront bloquer toute diffusion et création inspirées de ces œuvres). En effet, si j’ai bien lu le site d’Ehma, il a eu son quart de siècle entre 2007 et 2015, donc s’il meurt à 80 ans et que l’on applique la loi européenne sur le domaine publique (70 ans après la mort de l’auteur), alors Adèle n’aurait pu diffuser son œuvre sans consentement des ayants droit avant 2135 !

Flattr this!

Disable Touchpad and Trackpad on Lenovo device when using Wacom tablet

Hello!

I have a little issue when I’m taking my university’s lectures : I take notes with my Wacom Bamboo tablet and some of the room tables are too short to have the tablet front my laptop (Thinkpad of Lenovo) and so I have to put the tablet on my laptop keyboard.

My issue is, that with such a desktop configuration, touchpad and especially the trackpoint move my mouse and disturb my notes when I’m drawing with the tablet (it’s a physical issue, the tablet make a pressure on the trackpad). Gnome allow me to disable the touchpad, but not the trackpad. That’s why I’ve looked for a mean to disable both devices on the command line and to do it automatically when plug the tablet (and enable them back when I unplug the tablet).

Detecting devices and modifying their properties

To find actual input devices, you can use xinput list. I had this output :

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ SynPS/2 Synaptics TouchPad id=13 [slave pointer (2)]
⎜ ↳ TPPS/2 IBM TrackPoint id=15 [slave pointer (2)]
⎜ ↳ Wacom Bamboo 16FG 4x5 Pen stylus id=9 [slave pointer (2)]
⎜ ↳ Wacom Bamboo 16FG 4x5 Pen eraser id=10 [slave pointer (2)]
⎜ ↳ Wacom Bamboo 16FG 4x5 Finger touch id=16 [slave pointer (2)]
⎜ ↳ Wacom Bamboo 16FG 4x5 Finger pad id=17 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
 ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
 ↳ Power Button id=6 [slave keyboard (3)]
 ↳ Video Bus id=7 [slave keyboard (3)]
 ↳ Sleep Button id=8 [slave keyboard (3)]
 ↳ Integrated Camera id=11 [slave keyboard (3)]
 ↳ AT Translated Set 2 keyboard id=12 [slave keyboard (3)]
 ↳ ThinkPad Extra Buttons id=14 [slave keyboard (3)]

So, the interesting part here is the Vritual core pointer section. We take note of complete name of our devices, like SynPS/2 Synaptics TouchPad or TPPS/2 IBM TrackPoint . We’ll use later these names to modify settings from command line (we use the device names and not IDs because, IDs can change on time and not names).

Now, to see every properties of the devices, you can use same command with option list-props #device (replacing #device by the names noted above). Output of my Trackpoint device :

Device 'TPPS/2 IBM TrackPoint':
    Device Enabled (127):   1
    Coordinate Transformation Matrix (129): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
    Device Accel Profile (258): 0
    Device Accel Constant Deceleration (259):   1.000000
    Device Accel Adaptive Deceleration (260):   1.000000
    Device Accel Velocity Scaling (261):    10.000000
    Device Product ID (247):    2, 10
    Device Node (248):  "/dev/input/event14"
    Evdev Axis Inversion (262): 0, 0
    Evdev Axes Swap (264):  0
    Axis Labels (265):  "Rel X" (137), "Rel Y" (138)
    Button Labels (266):    "Button Left" (130), "Button Middle" (131), "Button Right" (132), "Button Wheel Up" (133), "Button Wheel Down" (134)
    Evdev Scrolling Distance (267): 0, 0, 0
    Evdev Middle Button Emulation (268):    0
    Evdev Middle Button Timeout (269):  50
    Evdev Third Button Emulation (270): 0
    Evdev Third Button Emulation Timeout (271): 1000
    Evdev Third Button Emulation Button (272):  3
    Evdev Third Button Emulation Threshold (273):   20
    Evdev Wheel Emulation (274):    1
    Evdev Wheel Emulation Axes (275):   6, 7, 4, 5
    Evdev Wheel Emulation Inertia (276):    10
    Evdev Wheel Emulation Timeout (277):    200
    Evdev Wheel Emulation Button (278): 2
    Evdev Drag Lock Buttons (279):  0

To disable this device I need to put its « Device Enabled » property to 0, to make such stuff I use xinput set-props "TPPS/2 IBM TrackPoint" "Device Enabled" 0 (note, that if you read the xinput documentation, you can also just call xinput --disable "TPPS/2 IBM TrackPoint" if you want to simply enable/disable device).

Detect udev events and run script when they occurs

Now, the goal is to detect an event when we insert the Wacom tablet. For this purpose, we use udevadm monitor --property > udevlog, we plug the tablet and then we hit Control-C. Now there’s udev events written in the new udevlog file, like this one :

UDEV  [38147.590547] add   /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2 (usb)
ACTION=add
BUSNUM=004
DEVNAME=/dev/bus/usb/004/019
DEVNUM=019
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.2
DEVTYPE=usb_device
ID_BUS=usb
ID_MODEL=CTH-470
ID_MODEL_ENC=CTH-470
ID_MODEL_FROM_DATABASE=CTH-470 [Bamboo Fun Pen & Touch]
ID_MODEL_ID=00de
ID_REVISION=0100
ID_SERIAL=Wacom_Co._Ltd._CTH-470
ID_USB_INTERFACES=:030102:030000:
ID_VENDOR=Wacom_Co._Ltd.
ID_VENDOR_ENC=Wacom\x20Co.\x2cLtd.
ID_VENDOR_FROM_DATABASE=Wacom Co., Ltd
ID_VENDOR_ID=056a
MAJOR=189
MINOR=402
PRODUCT=56a/de/100
SEQNUM=4153
SUBSYSTEM=usb
TYPE=0/0/0
USEC_INITIALIZED=457037954

We use these information to create an udev rule on plugin (you should save it in a file with name ending by « .rules » in the directory /etc/udev/rules.d, so with root permissions) :

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="00de", ENV{DISPLAY}=":0", ENV{REMOVE_CMD}="/home/adrien/wacom.sh enable", RUN+="/home/adrien/wacom.sh disable"

You should modify idVendor, idProduct to your device properties (respectively ID_VENDOR_ID and ID_MODEL_ID in the udevadm output above) and it should work for you too.

The ENV{REMOVE_CMD} argument define a command to run when this device is removed and the ENV{DISPLAY} part define the DISPLAY environment variable for the script.

As an example, see below my wacom.sh script (think to make it executable):

case "${1}" in
    "enable" | "disable")
        if [ "$1" = "enable" ]; then
            new_mouse_state="1"
        else
            new_mouse_state="0"
        fi

        # Disable Touchpad
        xinput set-prop "SynPS/2 Synaptics TouchPad" "Device Enabled" "${new_mouse_state}"

        # Disable Trackpoint
        xinput set-prop "TPPS/2 IBM TrackPoint" "Device Enabled" "${new_mouse_state}"

        # Modify Scaling of Pen Stylus
        #xinput set-prop 13 "Device Accel Velocity Scaling (261)" 1.0
esac

Source

  • http://wpkg.org/Disable_/_enable_keyboard_and_mouse_in_Linux
  • https://bbs.archlinux.org/viewtopic.php?pid=1143999#p1143999

Flattr this!

Utiliser windows 8.1 sans compte Microsoft ? Utiliser Android sans compte Google ?

Je viens de terminer la mise à jour de Windows 8 à la version 8.1 dans ma machine virtuelle et voilà que l’on me force à créer un compte Microsoft pour pouvoir utiliser Windows… Je n’appréciais déjà pas que les Android fournis par les constructeurs nous suggèrent fortement de créer un compte Google pour pouvoir installer des applications par le Play Store, là, on touche des sommets !

M’obliger à lier une session Windows à un compte Microsoft ! Cela signifie, que sur chaque ordinateur qui aura un Windows 8.1 je serais obligé de le lier à mon compte… Que ce soit un ordinateur personnel, une session professionnelle, un session temporaire sur un ordinateur emprunté, …

J’en ai marre de ce concours de qui à la plus grosse entre ces différentes entreprises juste pour pouvoir affirmer au bilan d’année « Nous avons 1 milliard d’utilisateurs ! » « Et nous 1.5 milliards ! » et pouvoir surtout se faire de l’argent sur notre dos grâce à leurs publicités dites « ciblées ».

Je voulais simplement démarrer un ordinateur pour écrire un texte / naviguer sur internet, pas me faire harceler pour créer un compte chez X et donner une adresse mail supplémentaire pour les spammeurs et mon numéro de mobile juste pour « garantir la sécurité de mon compte » !

Voilà donc ce qu’est l’informatique du XXIème siècle : une informatique où l’on ne peut plus rien faire sans être fiché, lié à un cloud, utilisé pour générer des bénéfices, … Sauf si l’on utilise des logiciels libres qui sont crées POUR LES UTILISATEURS et non POUR LES BÉNÉFICES de l’entreprise X.

Flattr this!