gitlab – backup sauvegarder sur un partage samba

Suite à l’installation de gitlab sur un serveur, j’ai paramétré la sauvegarde sur un point de montage sur un partage SAMBA, sans gestion de domaine, ou quelconque partage d’utilisateur.

Et la c’est le début des galères car je ne pouvais définir un point de montage avec owner ‘git’ car d’autres process s’exécutent sur ce répertoire. En conséquence ‘gitlab-rake’, qui crée ses fichiers avec droit uniquement pour le owner, plantait toujours avec un ‘permission denied’.

Le problème commence ici :
le point de montage est définit comme suivant dans le fstab :
cifs gid=val1,credentials= ,uid=val2,file_mode=0664,dir_mode=0664 0 0

Le montage est tel que tous les fichiers crées appartiendront à val1.val2. En effet l’uid et le gid seront forcés. Je n’ai pas trouvé comment permettre une négociation et cela me semble impossible comme les utilisateurs systèmes sur chaque machine ne correspondent pas.

J’ai cherché des réponses :
dans le man de mount.cifs
dans la gestion des acls
dans cet article assez complet sur samba
en essayant umask

Mais en vain !
Et finalement j’ai simplement crée deux points de montage, avec des uids différents !

note : ne pas oublier de sauvegarder la configuration comme recommandé pour compléter la sauvegarde.

Publié dans administration, Informatique, Script shell et utilitaires associés | Laisser un commentaire

Code C : Afficher / Ecrire les nombres à décimal (float/double) avec la virgule

En C par défaut la locale est « C » (implémentation portable) : cela implique que les nombres à décimal utilisent le séparateur ‘.’. Cela ne pose en général pas de problème, car le développeur à l’habitude de coder ses nombres avec ce séparateur.

C’est plus problématique dans certaines situations : lorsque le programme exporte des fichiers de mesures au format CSV pour exploitation sous Excel. Les nombres ne sont pas reconnus à moins de paramétrer une locale différente.

Une solution est donc d’utiliser l’API locale.h disponible depuis C89 (selon mon manpage).
Le code que je propose est tiré d’un billet stackoverflow.

Il est volontairement limité à la modification du format d’affichage des nombres, mais la consultation du manpage détaille la possibilité d’un impact élargi aux expressions régulières, nombres monétaires,…


#include
#include

int main()
{
float f = 12345.67;

// obtain the existing locale name for numbers
char *oldLocale = setlocale(LC_NUMERIC, NULL);

// inherit locale from environment
setlocale(LC_NUMERIC, "");

// print number
printf("%'.2f\n", f);

// set the locale back
setlocale(LC_NUMERIC, oldLocale);
}

Publié dans Développement, Informatique | Laisser un commentaire

Vulnérabilité – OS Command Injection

J’ai récemment eu une mise à jour de mon QNAP qui patientait depuis quelques semaines, j’ai lu le log de la release et je lis à peu près ça :

Fix vulnérability CWE-78

Mais kesako ? Petite recherche sur google : il s’agit d’une vulnérabilité logicielle qui permet d’injecter des commandes à l’OS.

Sa description complète est ici. Ce lien pointe la base de connaissance de HIGH-TECH BRIDGE sur les CWE qu’elle a détectées (si mon anglais est bon).

Petite apartée :

  • Il s’agit d’une vulnérabilité qui date de 2015… l’était temps diront certains mais c’est bon de voir que QNAP entretient son soft sur les aspects sécurité.
  • CWE est l’acronyme de Common Weakness Enumeration, qui est une liste maintenue par un organisme publique Américain, le MITRE (non pas le chapeau du pape !). Il de son portail WEB. Allez le voir, il y a plein de ressources concernant la sécurité logicielle et la sécurité de façon plus globale.
  • On revient donc à nos moutons, on s’intéresse en particulier à l’exemple donné sur l’usage de la commande système. Je fais alors ce petit test codé en C :
    test_system

    Et simplement en l’appelant avec cette commande :
    ./test_system google.fr;echo OWNED... :D

    La commande ‘echo’ non prévu dans le cadre de l’exécution du code, est exécutée !
    On se rend compte de la fragilité de l’utilisation de la commande system, à utiliser avec parcimonie : évitez son utilisation avec des données externes au programme.

    Pour finir je conseille de consulter directement la database du MITRE plutôt que celle de HIGH-TECH, plutôt accée sécurité WEB (ils vendent leur outil dédié à la sécurité WEB).
    Le portail référence également des articles du CERT ainsi que les outils d’analyse de code avec la compatibilité CWE..

    Publié dans Développement, Informatique | Marqué avec , , , | Laisser un commentaire

    Installer Shrew sur Mac OS X

    On a récemment ouvert un tunnel IPSec, et l’outil client que l’on nous a préconisé était shrew. Il marche très bien sous Linux et Windows.
    J’ai vu qu’il y avait un port sous mac, et je l’ai essayé.

    L’installation est possible grâce à ‘brew’.
    Premier écueil, sur le repo à jour shrew a été supprimé
    Pas de problème, on suit ce billet de blog.

    j’installe donc cette nouvelle source boneyard qui liste les paquets ‘abandonnés’ avec ‘brew tap homebrew/boneyard' puis j’install shrew avec la commande 'brew install shrewsoft-vpn-client'.

    Aie ! Petit problème de dépendance non satisfaite mais le package manager est bien documenté et m’indique comment installler la dépendance : 'brew cask install tuntap'

    Je relance l’install de shrew, les dépendances manquantes sont cette fois automatiquement installées (cmake, openssl, qt).

    A noter que l’outil est complètement recompilé par l’installeur…

    Vient enfin les recommandations pour le lancement :

    To have launchd start homebrew/boneyard/shrewsoft-vpn-client now and restart at startup:
    sudo brew services start homebrew/boneyard/shrewsoft-vpn-client
    Or, if you don’t want/need a background service you can just run:
    sudo /usr/local/sbin/iked

    .app bundles were installed.
    Run `brew linkapps shrewsoft-vpn-client` to symlink these to /Applications

    La denière commande ne permet de lancer que l’interface de management via la liste des applications.
    Il faut utiliser l’une des précédentes commandes pour avoir le service en arrière-plan.

    Voilà.
    J’ai importé ma conf VPN dans le manager, mais la connexion ne marche pas (timeout) :(. Je ne peux conclure sur un problème côté client ou serveur.
    To be conitnued….

    shrew-macosX

    Publié dans administration, Informatique, Internet | Marqué avec , , , | Laisser un commentaire

    Pasteis de Nata (flan portugais) – une bonne recette.

    J’ai enfin trouvé une recette convenable pour les Natas.
    Pour info ce sont des desserts dans la catégorie flans, mais la garniture est plus crémeuse et moins bourrative que les flans que nous connaissons bien.
    La cuisson est rapide, par contre il faut un four qui chauffe bien le mien n’affiche pas les 250°C (j’ai MAX :D).

    Je trouve que la finition avec le sirop de sucre est un vrai plus.

    Le lien youtube ici, et je recopie les infos pour ne pas les perdres.

    RECETTE COMPLETE:
    Pour 6 pastéis de Nata
    Ingrédients:
    – Pâte feuilletée (carré de 20 cm de côté)
    – 15 g de farine
    – 250 g de lait
    – 1 bâton de cannelle
    – 125 g sucre
    – 50 g eau
    – 2 jaunes d’œuf
    – 1 œuf
    – 65 g sucre
    – 50 g eau
    Etapes
    Roulez le carré de pâte feuilletée et le découpez en 6 morceaux de taille identique. Foncez la pâte dans un moule préalablement beurré et réservez au frigo.
    Dans une casserole, mélangez la farine avec le lait et le bâton de cannelle. Chauffez jusqu’à avoir une petite ébullition, retirez du feu. Dans une autre casserole, faites chauffez le sucre (125 g) et l’eau (50 g) à 110°C (ou compter 2 minutes après le début de l’ébullition), retirez du feu et ajoutez ce sirop à la préparation précédente ainsi qu’1 œuf et 2 jaunes. Bien mélangez, et versez dans les moules (le mélange doit être chaud). Enfournez dans un four préchauffé à 250°C pour 10 minutes (minimum, la cuisson est capricieuse et varie en fonction du four).
    Faites chauffer les 65 g de sucre et les 50 g d’eau ensemble, une fois le sucre dissout, stoppez la cuisson. Badigeonnez, les pastéis de ce sirop une fois sortis du four et refroidis pour leur donner un beau brillant. Enjoy !

    Edit : quelques astuces tirées de cette vidéo, et des retours d’expérience.

    Ma pate feuilletée mesure 30 cm de diamètre, j’arrive à faire 6 pasteis, mais ça dépend aussi du moule, moi j’ai des trucs en silicone pas très large. Et malgré mes 6 récipients j’ai toujours un peu trop de crème.
    Pour le sirop de sucre à la fin doser deux fois moins, j’en ai toujours trop.
    Si votre crème à quelques grumeaux disgracieux, utiliser un chinois pour la filtrer.
    Dans la vidéo on propose d’ajouter un zest de citron, ce que j’essaierai la prochaine fois.

    Publié dans cuisine, dessert | Marqué avec , , | Laisser un commentaire

    debian 8 / apache / gitlist : page not found

    Suite à une mise à jour j’ai eu des problèmes d’affichage d’affichage du détail des dépôts : « not found ».

    Un commentaire laissé ici m’a mit sur la piste : l’url était mal formée (il manquait ‘index.php’).

    La vraie solution complète est donnée sur un billet de sitepoint.

    Il faut activer le module rewrite, et l’autoriser pour gitlist. Plusieurs méthodes pour cette dernière : le fichier .htaccess, le fichier de conf par défaut apache, ou le fichier de conf dédié. J’ai choisi cette dernière solution.
    Dans l’article cité ils choisissent la première méthode, en autorisant globalement l’utilisation du fichier .htaccess avec la directive AllowOverride.
    Mais ce n’est pas conseillé, la doc howto d’apache explique que cette méthode doit être réservée à ceux qui ne peuvent accéder à la configuration du serveur (répertoire /etc/apache), et qu’elles dégradent les performances du serveur.
    J’ai donc fait le bon choix d’autant plus que les autres sites sont également configurés de cette manière.

    J’ai donc copié les règles du fichier .htaccess et écrit les règles comme suivant :
    Alias /gitlist /var/www/gitlist


    Order allow,deny
    allow from all


    Options -MultiViews +SymLinksIfOwnerMatch
    RewriteEngine On
    #RewriteBase /var/www/gitlist

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [L,NC]


    order allow,deny
    deny from all

    Mais je me suis rendu compte que la navigation à partir de la redirection depuis mon portail échouait : je redirigeais vers http://monsite.com/gitlist, et la page n’était pas trouvée, il faut préciser http://monsite.com/gitlist/index.php pour que cela fonctionne.
    Je ne sais pas comment forcer l’url dans la configuration, j’ai donc corrigé le lien dans mon portail.

    Publié dans administration, Informatique | Marqué avec , , | Laisser un commentaire

    Mac OS X El Capitan / TRIM sur SSD tiers sans ‘TRIM Enabler’

    J’utilise pour mon MBP Pro un SSD Intel.
    Jusqu’alors j’utilisais « TRIM Enabler » gratuitement pour activer le TRIM.
    Mais aujourd’hui j’ai constaté plusieurs problèmes :

  • le TRIM était désactivé (firefox qui rame terriblement)
  • TRIM enabler est devenu payant $9,99 (pas si cher mais, mais trop pour un truc aussi basique)
  • TRIM enabler ne marche pas en principe avec OS X El Capitan.
  • Ni une ni deux je me mets en passe de chercher la solution, et figurez-vous que c’est Apple qui la propose : la commande ‘trimforce’ en ligne de commande. C’est expliqué chez HowToGeek.

    Voilà ci-dessous le résultat de l’exécution :
    Last login: Sat Sep 17 15:07:10 on console
    macbook-pro-de-selso-liberado:~ selsoliberado$ sudo trimforce enable
    Password:
    IMPORTANT NOTICE: This tool force-enables TRIM for all relevant attached
    devices, even though such devices may not have been validated for data
    integrity while using TRIM. Use of this tool to enable TRIM may result in
    unintended data loss or data corruption. It should not be used in a commercial
    operating environment or with important data. Before using this tool, you
    should back up all of your data and regularly back up data while TRIM is
    enabled. This tool is provided on an “as is” basis. APPLE MAKES NO WARRANTIES,
    EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
    NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
    REGARDING THIS TOOL OR ITS USE ALONE OR IN COMBINATION WITH YOUR DEVICES,
    SYSTEMS, OR SERVICES. BY USING THIS TOOL TO ENABLE TRIM, YOU AGREE THAT, TO THE
    EXTENT PERMITTED BY APPLICABLE LAW, USE OF THE TOOL IS AT YOUR SOLE RISK AND
    THAT THE ENTIRE RISK AS TO SATISFACTORY QUALITY, PERFORMANCE, ACCURACY AND
    EFFORT IS WITH YOU.
    Are you sure you wish to proceed (y/N)? y
    Your system will immediately reboot when this is complete.
    Is this OK (y/N)? y
    Enabling TRIM...
    .
    .
    Operation succeeded. Your system will reboot momentarily, please wait...

    Un reboot et le tour est joué :

    propriété SSD - TRIM

    propriété SSD – TRIM

    Publié dans administration, Informatique | Marqué avec , | Laisser un commentaire

    Debian 8 / VirtualBox 4.3.40 – problème avec l’installation des guest additions

    Si lors de l’installation des guest additions vous avez le problème suivant :

    The headers for the current running kernel were not found. If the module compilation fails then this could be the reason.

    Building the main Guest Additions module …done.
    Building the shared folder support module …fail!
    (Look at /var/log/vboxadd-install.log to find out what went wrong)

    … alors que vous avez bien installé les linux-headers, c’est parce qu’il vous manque également le paquet dkms

    La réponse a été postée ici

    Certains conseillaient d’installer Xorg, mais ce n’est pas la vraie/bonne solution, c’est bien le paquet dkms (enregistrement et recompilation des drivers automatisé avec la mise à jour des noyaux) qui manque.

    La bonne réponse a été postée par ‘dog’, que je recopie ci-dessous :
    sudo apt-get install build-essential linux-headers-`uname -r` dkms

    Voilà !

    Publié dans administration, Informatique | Laisser un commentaire

    TCP keep Alive – LD_PRELOAD

    Récemment j’ai du débogger une application embarquant un serveur réseau (protocole basé sur TCP) sur une plateforme ARM, avec un développement réalisé avec le MDK de Keil.
    Le client maintenait la connexion ouverte même s’il ne générait aucun traffic, et le serveur fermait la connexion de sa propre initiative. J’ai oublié qu’il fallait activer l’option Keep Alive lors de la création de la socket à l’appel de tcp_get_socket.

    Pour rappel, lors de l’appel on paramètre un timeout sur une connexion inactive avant fermeture, à moins que l’option keep alive soit activée et dans ce cas le serveur envoit une trame ACK au client pour vérifier ‘sa présence’.

    Lors de la recherche du problème j’ai trouvé un article intéressant sur cette option du protocole TCP (traduit en français).

    On notera à la fin de cet article la présentation d’une fonctionnalité sous Linux très intéressante, à savoir l’ordonnancement du chargement des bibliothèques dynamiques avec la variable d’environnement LD_PRELOAD.
    Dans le cadre de cet article on la présente conjointement avec la bibliothèque libkeepalive (pour forcer l’option sur des programmes sans les modifier).
    Cette variable inspire visiblement beaucoup de spécialiste de la sécurité (ou hacker) pour contourner des contraintes réseau ou ou bien contourner des sécurités dans le code.

    Publié dans Développement, Informatique | Marqué avec , , , | Laisser un commentaire

    dual Boot : PB démarrage après suppression Ubuntu

    Pour l’installation de Windows 10 j’ai du redimensionner un disque en dualboot Windows7/Ubuntu.

    Je n’ai pas eu d’autre choix dans mon cas que de supprimer la partition Ubuntu pour pouvoir faire de l’espace, quitte à la réinstaller par la suite.
    Une fois fait (avec EASUS Partition Manager gratuit en édition home), j’ai eu la surprise au redémarrage de voir grub signaler l’erreur et m’ouvrir un prompt ‘rescue’. Je ne connais rien au shell grub, alors j’ai pris un CD de réparation Windows, qui a bien trouvé une partition windows, mais qui ne proposait pas de réinstallation du loader.

    La réponse je l’ai eu sur les forums ubuntu : avec le CD de réparation lancer un invite de commande et taper la commande : bootrec /fixmbr.

    Et voilà le loader windows est réinstallé il n’y a plus qu’a redémarrer.

    Note : le CD de réparation Windows est crée avec l’utilitaire de sauvegarde/restauration windows.

    Publié dans Informatique, Script shell et utilitaires associés | Marqué avec , , | Laisser un commentaire