Joris Dedieu a écrit 1610 commentaires

  • [^] # Re: Employeur

    Posté par  (site web personnel) . En réponse au journal Claude en fait trop. Évalué à 6.

    On pourrait surtout réduire notre dette.

    Pourquoi ?

  • [^] # Re: le maillon faible ?

    Posté par  (site web personnel) . En réponse au journal dDoS contre les serveurs DNS. Évalué à 5.

    Pour toucher la totalité des clients ne faudrait-t-il pas que l'attaque dure autant de temps que le TT

    Une grosse partie (dirais-je la majorité ?) des sites utilisent des TTL compris entre 1h30 et 1mn (15mn par exemple pour linuxfr) ce qui n'est en rien une durée exceptionnelle pour les attaques DOS.

    Le compromis entre sécurité et souplesse est toujours délicat à trouver.

  • [^] # Re: Typage strict

    Posté par  (site web personnel) . En réponse à la dépêche Sortie de PHP 7.0 - un nouveau départ. Évalué à 2.

    a longtemps été activé par défaut chez beaucoup d'hébergeurs

    Oui enfin c'était un paramètre indispensable pour faire fonctionner OSCommerce qui était la boutique en ligne la plus utilisée à l'époque. Les hébergeurs en général ne cherchent pas plus que de faire marcher les trucs populaires out of the box et ce n'est déjà pas une mince affaire.

  • [^] # Re: Dieu n'existe pas

    Posté par  (site web personnel) . En réponse au journal Paris sous les balles. Évalué à 5.

    Moi aussi je ris de Dieu !

    Nom

  • [^] # Re: Dieu n'existe pas

    Posté par  (site web personnel) . En réponse au journal Paris sous les balles. Évalué à 6. Dernière modification le 16 novembre 2015 à 19:43.

    Correction, tu crois que Dieu n'existe pas.

    Non ne pas croire n'est pas une croyance. C'est pile l'inverse. La proposition (Dieu existe) a été faite. Elle a été rejetée. Il ne serait donc s'agir d'autre chose (une autre croyance) mais bien d'une réponse à la même question (faut-il croire en Dieu).

    Il en va de même pour l'au-delà et toutes ces choses pour lesquelles il ne peut exister de démonstration raisonnée (la question de savoir pourquoi il y a quelque chose plutôt que rien n'ayant pas de réponse).

    C'est une erreur commune des croyants d'assimiler l'incroyance à la croyance (et de la l'assertion selon laquelle s'il y a croyance, il y a croyance en Dieu - voir Descartes).

    Ce débat est tranché depuis Pascal.

  • [^] # Re: disparition des greffons

    Posté par  (site web personnel) . En réponse à la dépêche Firefox ? 42 !. Évalué à 10.

    Pour les applets java, je pense que ça fait longtemps que c'est fini et oublié.

    Euh c'est sur qu'on aimerai bien, mais il reste un paquet de devices en fonction (cartes contrôleur IPMI, KVM-IP, cameras de surveillance …) qui ne sont pilotables que via une applet java.

  • [^] # Re: Pas mal mais ...

    Posté par  (site web personnel) . En réponse au journal Humour d'informaticien. Évalué à 3.

    toujours avoir plusieurs fenêtres de terminaux qui tournent sur un 2 ou 3 écrans, tu lance top par exemple sur différents serveurs

    tail -f ou tcpdump ça le fait mieux :)

  • [^] # Re: bonne nouvelle

    Posté par  (site web personnel) . En réponse à la dépêche Haproxy 1.6. Évalué à 1.

    Désolé de te décevoir, il n'est pas utilisé partout ailleurs et il n'est pas incontournable, j'ai bossé avec des dizaines d'environnements en haute disponibilité, et je n'ai jamais eu à toucher à HAproxy,

    Amen

  • [^] # Re: Avec Active directory

    Posté par  (site web personnel) . En réponse au journal Disputatio : Samba, Kerberos et LDAP. Évalué à 2.

    Contrairement à Samba qui ne fournit que la fonctionnalité pour le faire, l'avantage de Red Hat est de te proposer une solution clé en main pour le déploiement, ça existe dans Debian (vu que ce que fait Red Hat est reversé en libre), mais moins intégré, à toi de configurer plus de choses.

    J'utilise FreeIPA sur lequel est basé cette solution. Ça juste fonctionne et c'est pas mal documenté.

    Sur redhat like freeipa-client fait juste le job sous debian, le paquet existe mais je ne l'ai pas testé, sous FreeBSD et je pense pas mal d'autres Unix, l'intégration se fait à la main via sssd. Par contre pour Windows si les besoins ne sont pas simple, il faut passer par un AD (bientôt samba4 visiblement https://www.redhat.com/archives/freeipa-users/2015-May/msg00004.html).

    Ne connaissant pas Windows, je ne sais pas si ça répond à tes besoins.
    Pour moi les plus sont avant tout l'ui (web + cli + API), la gestion des clés ssh, ssh fingerprint et droits sudo, mappage selinux, le sucre (scripts de setup, réplication, backup …), la page d’enrôlement pour firefox, l'intégration avec The Foreman. Je n'ai par contre pas encore trop touché à la PKI.

    Manque la récup des mots de passes.

    http://www.freeipa.org

  • [^] # Re: oui, en laissant faire l'installeur

    Posté par  (site web personnel) . En réponse au message Kickstart et adresse IP manuelle. Évalué à 2.

    Je ne comprends pas trop.

    Si tes machines bootent sans dhcp, ni passer des paramètres IP au boot alors, le seul moyen d'avoir du réseau pour récupérer ton ks.cfg est de dédier une ip a l'install et de la mettre en dur dans ton ks. En espérant qu'il n'y ait pas de collision.

  • [^] # Re: 3 suites

    Posté par  (site web personnel) . En réponse au message Aide commande FIND et copier les résultats.. Évalué à 4.

    Je pense que xargs sera plus rapide que -exec. Par contre lorsqu'on récupère des données, il vaut mieux éviter de les reperdre. Je conseille donc une copie plutôt qu'on déplacement. Tu peux faire ça avec rsync

    rsync -avn --include='*.jpg' --include='*.JPG' --exclude='*' /home/diego/Imágenes/ /desitnation/ 
    
    

    Avec le -n rsync ne fait rien (dry-run) il faut l'enlever lorsque la commande fait ce que tu souhaites.

  • [^] # Re: Ligatures

    Posté par  (site web personnel) . En réponse au journal Typographie & logiciels. Évalué à 4.

    Certaines techniques de lecture rapide (cf. le lien wp donné par NicolasG) consistent à supprimer cette phase au profit d'une reconnaissance purement visuelle (les mots deviennent des sortes d'idéogrammes, j'imagine).

    C'est pas vraiment ça. Le rythme et associé a une autre sensation que le son. Je ne sais pas vraiment comment expliquer ça autrement. La non vocalisation est naturelle chez moi. C'est peut-être différent pour ceux qui se l'imposent.

    Quand je lis un roman, je suis a moins d'un effort particulier incapable de prononcer le nom des personnages ou des lieux sauf s'il s'agit de noms usuels. Pourtant j'en reconnais parfaitement la sonorité qui pour moi apparaît plutôt sous forme d'images ou de mouvements.

    Cela permet effectivement une lecture très rapide et ne gâche en rien les belles phrases.

  • # Haproxy

    Posté par  (site web personnel) . En réponse au message Cherche solution de load balancing. Évalué à 2.

    Dans ce cas de figure je pense allouer des adresses IP supplémentaires au serveur et en cas de défaillance d'un nœud je bascule son adresse IP sur une autre machine le temps de rétablir le service.

    Faire du roundrobin DNS est le moyen le plus simple de gérer plusieurs points d'entrée. La tolérance de panne doit être assurée avec un logiciel tiers tel que keepalived.

    Cette solution a un inconvénient : dans l'exemple juste avant (10 machines ; 1 HS) c'est pas 9 machines qui se répartissent le boulot mais UNE machine qui va devoir bosser double.

    Il est impératif de prévoir le coup ou les machines tombent en cascade les unes après les autres car ton mécanisme de tolérance de panne déplace le stress sur ton réseau. En général on limite le nombre de reprises possibles. Avoir plusieurs points d'entrée DNS est utile dans ces cas là.

    Si la solution Apache n'est pas possible, vous auriez une autre solution à me suggérer ?

    Avant de déterminer ton archi, je pense qu'il est souhaitable que tu jettes un oeil à haproxy, varnish, nginx (en particulier nginx-rtmp-module), LVS et keepalived qui sont les choses qu'on trouve en général sur les frontaux web à répartition de charge / tolérance de panne.

  • [^] # Re: qu'est ce qui a changé ?

    Posté par  (site web personnel) . En réponse au message soucis avec claws mail. Évalué à 2.

    je n'avais pas pensé à le lancer du terminal

    claws-mail --debug

    Voir également le fichier $HOME/.claws-mail/claws.log

  • [^] # Re: Est-ce que le server X11 fonctionne au déballage?

    Posté par  (site web personnel) . En réponse à la dépêche FreeBSD 10.2. Évalué à 3.

    Qui saurait comment retrouver ces petits messages après installation ?

    Dans l'arbre des ports il s'agit des fichiers pkg-message. Je ne pense pas que ce soit installé par contre

  • [^] # Re: Avancée notable

    Posté par  (site web personnel) . En réponse au journal Tame et OpenBSD. Évalué à 4.

    Pour un serveur web, tame perds déjà de l'intérêt par manque de granularité.

    Oui il me tarde de voir comment il compte implémenter ça dans ce type de programmes. Je suis comme toi sceptique. A voir.

    Un truc marrant sur Debian (et probablement dérivé) la commande ping a eu, jusqu'à il n'y a pas si longtemps, le sticky bit root. Tout ça pour pouvoir ouvrir une socket en mode raw. Il y a une capabilities POSIX pour ça (CAP_NET_RAW) qui marche très bien.

    J'entends déjà un vieux BSDiste de ma connaissance clamer que "linux c'est de l'à peu près".

    La démarche est louable par contre elle n'est clairement pas aboutie. Remplacer le bit suid par un privilège plus fin est une bonne chose. Mais cela n'a pas conduit à la suppression du bit suid.

    Par exemple sur le PC avec lequel j'écris ce message (debian jessie)

    find /usr/bin/ /usr/sbin/ /bin/ /sbin/ -perm -4000 |wc -l
    20

    Il reste 20 programmes suid dans une install relativement basique.

    Si tu regardes l'implémentation de ping de OpenBSD, le programme commence par ouvrir une socket puis drope ses privilèges.

    int
    main(int argc, char *argv[])
    {
        struct hostent *hp;
        struct sockaddr_in *to;
        struct in_addr saddr;
        int ch, optval = 1, packlen, preload, maxsize, df = 0, tos = 0;
        u_char *datap, *packet, ttl = MAXTTL, loop = 1;
        char *target, hnamebuf[HOST_NAME_MAX+1];
        char rspace[3 + 4 * NROUTES + 1];   /* record route space */
        socklen_t maxsizelen;
        const char *errstr;
        uid_t uid;
        u_int rtableid;
    
        if ((s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) < 0)
            err(1, "socket");
    
        /* revoke privs */
        uid = getuid();
        if (setresuid(uid, uid, uid) == -1)
            err(1, "setresuid");

    Du coup dans les deux cas l'attaquant se retrouve avec une socket raw et pas grand chose de plus. On peut alors se demander quel est l’intérêt d'utiliser une Capacité plutôt qu'un privilège à la louche, si le résultat n'est pas la suppression des privilèges à la louche.

    C'est un peu je crois ce que dénonce Théo. Les choses à moitié implémentés parce que trop complexes ou intrusives. Sa vision de la sécurité est de faire des choses simples et robustes, implémentés de façon exhaustive. Si un jour OpenBSD décide de faire la peau au bit suid tu peux être sûr que ce sera fait de façon exhaustive et que nosuid deviendra l'option de montage par défaut.

  • [^] # Re: Complexité

    Posté par  (site web personnel) . En réponse au journal Tame et OpenBSD. Évalué à 10.

    Mais au moins c'est une sécurité qui ne nécessite aucune modification de programme et c'est l'admin qui gère sa politique notamment suivant la confiance qu'il accorde au binaire (et non le développeur qui s'évalue sa propre confiance ce qui est ridicule).

    Ce qui n'est surtout pas du même ordre. Je ne pense pas qu'il y ait antinomie entre une politique MAC et le fait d'écrire au sein d'un programme des gardes fou l'empêchant de dévier de son comportement normal.

    La comparaison de Tame ou Capsicum avec SELinux me semble hors propos. Le fait que Apache ne garde pas ses droits root, n’empêche pas de gérer les droits sur le système de fichier. La sécurité dans le code et la bonne administration du système ne s'opposent pas.

  • [^] # Re: Avancée notable

    Posté par  (site web personnel) . En réponse au journal Tame et OpenBSD. Évalué à 5.

    je ne suis pas de comprendre ce que tu entends par exhaustif,

    Pour uniq, dmesg et tout les programmes du système de base qui globalement font une et une seule chose, tame et sa quinzaine de droits me semble tout à fait adapté voir génial par sa simplicité d'implémentation.

    dmesg ne fait pas de réseau, ne forke pas, n'alloue pas de mémoire. C'est facile à dire, à concevoir et à implémenter. Pour un logiciel plus complexe tel un navigateur web, les droits risquent de manquer de granularité pour qu'un tel mécanisme soit réellement utilisable.

  • [^] # Re: Avancée notable

    Posté par  (site web personnel) . En réponse au journal Tame et OpenBSD. Évalué à 5.

    C'est un poil malhonnête comme comparaison

    Oui. C'était juste pour illustrer le côté réaliste de tame. Theo ne code pas un truc exhaustif qui couvre tous les cas. Mais un truc simple et pratique qui sera déployé de façon exhaustive dans le système de base dans 2 ou 3 versions.

  • [^] # Re: Marketing

    Posté par  (site web personnel) . En réponse au journal Chroniques de l'automatisation : L'hotellerie. Évalué à 10.

    Quand au femmes (pourquoi femmes? il y a des hommes aussi) de ménage, avant que ça s'automatise, il y a pour un petit moment (déjà que rien que passer l'aspirateur chez un particulier dans un endroit moins hostile, les "robots" ne sont pas vraiment au point)…

    De plus quand tu vois les conditions de travail chez les sous traitants dans l'hôtellerie, tu te dis que c'est sans doute le seul secteur ou remplacer l'homme par la machine risque de faire augmenter les couts d'exploitation.

    Pour ceux qui ne connaissent pas l'idée est d'embaucher à temps partiel (ne pas parler Français et être mère célibataire sera un plus). Puis de demander un rendement délirant du type 4 chambre à blanc ou 5 recouche à l'heure soit 16 à 20 chambres pour une demi journée de travail ce qui est totalement irréaliste. Ensuite il ne reste plus qu'à déduire le temps du nombre de chambre, voir appliquer des pénalités quand les objectifs ne sont pas remplis… Sans parler du manager gros bras qui vient gueuler et menacer, des hôteliers qui en veulent pour leur argent, des horaires indéterminés, du travail le dimanche, des heures passés à attendre (non payées bien sûr) qu'un client finisse par partir , des déplacements lorsqu'il faut se rendre dans 4 hôtels différents …

  • [^] # Re: SELinux

    Posté par  (site web personnel) . En réponse au journal Tame et OpenBSD. Évalué à 9. Dernière modification le 20 juillet 2015 à 14:01.

    Saurais-tu dire en quoi cela est différent de SELinux?

    SELinux est de l'ordre des politiques MAC (Mandatory Access Control) autrement dit tu définies ce qu'un programme peut ou ne peut pas faire sous forme d'une politique d’exécution.

    Ici on est dans l'ordre des Capacités. Tu définis lors de la programmation que ton programme ne doit pas faire telle ou telle chose.

    Par exemple tu peux décider sous RedHAT avec SELinux que Apache ne doit pas faire de DNS setsebool httpd_verify_dns off. Cela est possible parce que l'empaqueteur d'apache a défini une politique de sécurité prenant en charge cette possibilité. En tant qu'administrateur système, tu peux utiliser cette politique ou une autre de ton cru ou aucune. Cela est indépendant du fait qu'Apache puisse ou ne puisse pas effectuer de la résolution DNS.

    Hors Apache peut et doit pouvoir résoudre des noms. Cela se pilote par la directive HostNameLookup (je simplifie volontairement). Pour un programmeur il est donc intéressant de pouvoir dire, si HostNameLookup vaut on alors Apache doit avoir la capacité de résoudre des noms sinon, cette capacité doit lui être enlevée. cela permet de limiter fortement l'impact de bugs qui seraient utilisés comme vecteur d'attaque et ce indépendamment des politiques mises en place par l'administrateur système qui déploie ce soft.

  • # Avancée notable

    Posté par  (site web personnel) . En réponse au journal Tame et OpenBSD. Évalué à 10.

    Une petit exemple vaut mieux qu'un long discours

    Implémentation sans raffinage de Tame dans uniq

    Index: usr.bin/uniq/uniq.c
    ===================================================================
    RCS file: /cvs/src/usr.bin/uniq/uniq.c,v
    retrieving revision 1.19
    diff -u -p -u -r1.19 uniq.c
    --- usr.bin/uniq/uniq.c 26 Nov 2013 19:25:39 -0000      1.19
    +++ usr.bin/uniq/uniq.c 3 Jun 2015 22:09:03 -0000
    @@ -33,6 +33,7 @@
      * SUCH DAMAGE.
      */
    
    +#include <sys/tame.h>
     #include <ctype.h>
     #include <err.h>
     #include <errno.h>
    @@ -61,6 +62,8 @@ main(int argc, char *argv[])
            int ch;
            char *prevline, *thisline;
    
    +       tame(TAME_STDIO | TAME_RPATH | TAME_WPATH);
    +
            obsolete(argv);
            while ((ch = getopt(argc, argv, "cdf:s:u")) != -1) {
                    const char *errstr;
    @@ -118,6 +121,8 @@ main(int argc, char *argv[])
            default:
                    usage();
            }
    +
    +       tame(TAME_STDIO);
    
            prevline = malloc(MAXLINELEN);
            thisline = malloc(MAXLINELEN);

    Implémentation (sans raffinage) de Capsicum dans uniq

    --- head/usr.bin/uniq/uniq.c    2011/11/06 08:18:11 227193
    +++ head/usr.bin/uniq/uniq.c    2013/07/18 22:11:27 253457
    @@ -44,15 +44,20 @@
       "$FreeBSD$";
     #endif /* not lint */
    
    +#include <sys/capability.h>
    +
     #include <ctype.h>
     #include <err.h>
    +#include <errno.h>
     #include <limits.h>
     #include <locale.h>
    +#include <nl_types.h>
     #include <stdint.h>
     #define _WITH_GETLINE
     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
    +#include <termios.h>
     #include <unistd.h>
     #include <wchar.h>
     #include <wctype.h>
    @@ -68,6 +73,17 @@
     static void     obsolete(char *[]);
     static void     usage(void);
    
    +static void
    +strerror_init(void)
    +{
    +
    +   /*
    +    * Cache NLS data before entering capability mode.
    +    * XXXPJD: There should be strerror_init() and strsignal_init() in libc.
    +    */
    +   (void)catopen("libc", NL_CAT_LOCALE);
    +}
    +
     int
     main (int argc, char *argv[])
     {
    @@ -77,6 +93,7 @@
        size_t prevbuflen, thisbuflen, b1;
        char *prevline, *thisline, *p;
        const char *ifn;
    +   cap_rights_t rights;
    
        (void) setlocale(LC_ALL, "");
    
    @@ -128,8 +145,34 @@
        ofp = stdout;
        if (argc > 0 && strcmp(argv[0], "-") != 0)
            ifp = file(ifn = argv[0], "r");
    +   if (cap_rights_limit(fileno(ifp), CAP_FSTAT | CAP_READ) < 0 &&
    +       errno != ENOSYS) {
    +       err(1, "unable to limit rights for %s", ifn);
    +   }
    +   rights = CAP_FSTAT | CAP_WRITE;
        if (argc > 1)
            ofp = file(argv[1], "w");
    +   else
    +       rights |= CAP_IOCTL;
    +   if (cap_rights_limit(fileno(ofp), rights) < 0 && errno != ENOSYS) {
    +       err(1, "unable to limit rights for %s",
    +           argc > 1 ? argv[1] : "stdout");
    +   }
    +   if ((rights & CAP_IOCTL) != 0) {
    +       unsigned long cmd;
    +
    +       cmd = TIOCGETA; /* required by isatty(3) in printf(3) */
    +
    +       if (cap_ioctls_limit(fileno(ofp), &cmd, 1) < 0 &&
    +           errno != ENOSYS) {
    +           err(1, "unable to limit ioctls for %s",
    +               argc > 1 ? argv[1] : "stdout");
    +       }
    +   }
    +
    +   strerror_init();
    +   if (cap_enter() < 0 && errno != ENOSYS)
    +       err(1, "unable to enter capability mode");
    
        prevbuflen = thisbuflen = 0;
        prevline = thisline = NULL;

    C'est sûr que les possibilités ne sont pas les mêmes, mais le travail pour une couverture complète du système est loin d'être le même non plus.

  • [^] # Re: Linagora

    Posté par  (site web personnel) . En réponse au journal 10 Millions d'€uros pour une suite office en ligne et libre. Évalué à 8.

    d'un autre côté ils participent vraiment à l'écosystème du libre et ce qu'ils produisent n'est pas du freemium comme le font beaucoup d'autres entreprises commerciales.

    Ça doit être pour ça que tous les anciens d'Aliasource ont quitté Linagora les uns après les autres …

  • [^] # Re: Démocratie?

    Posté par  (site web personnel) . En réponse au journal Et ce soir, la démocratie l'emporte ! . Évalué à 10.

    à toi aussi, je te demande démocratiquement 1000 € sans promesse que je te rembourser, j'ai fait un referendum avec moi-même et 100% du referendum veut que tu me files 1000 €

    C'est très loin de ce qui se passe. La Grèce a subie durant 5 ans les reformes imposées ses créanciers et sa situation n'a fait que s’aggraver. Donc à un moment donné, il faut arrêter les conneries. Face à des gens qui continuent à imposer sans aucuns résultats des méthodes qui ne marchent pas et présupposent " qu'un traité à plus de poids que l'expression directe du suffrage universel " (sic) , la Grèce vient de leur dire merde et elle a bien raison.

    La Grèce ne peut pas sortir de l'Euro. Non pas parce que cela lui serait plus dommageable (regarde l'Argentine) que ce qu'elle vit à présent mais parce que cela sonnerai la fin de l'Euro. Une fois la porte ouverte nombreux prendrons la fuite.

    Et c'est ainsi que David va imposer à Goliath la voix et le bien être des peuples en lui et place du dogme immuable de la concurrence libre et non faussée.

    Nos dirigeants vont devoir sortir du bois. Et révéler s'ils ont le courage de cette occasion historique. Ou si finalement ils signent par leur inconséquences la fin d'un rêve d'union des peuples et de paix. Il n'ont pas voulu entendre le non au traité constitutionnel. Pourtant les reproches de l'époque sonnent avec une actualité criante aujourd’hui.

    L'Europe va dans le mur, la Grèce lui offre une opportunité unique de sortir du trou en faisant la politique des peuples et non du fric.

    Baisser les retraites, baisser les salaires, c'est ça le projet ? Un monde bien triste en vérité.

    Vive la Grèce, vive l'Europe du progrès et de la démocratie.

  • [^] # Re: /usr avec la racine

    Posté par  (site web personnel) . En réponse à la dépêche DragonFly BSD 4.2. Évalué à 4. Dernière modification le 01 juillet 2015 à 20:20.

    Tu ne vas pas pouvoir installer grand chose alors, parce qu'à part OpenBSD je ne connais pas beaucoup d'OS qui fonctionnent encore avec des binaires statiques.

    FreeBSD fourni des utilitaires de base dans /rescue

    [               csh             fdisk           head            lzma            newfs_msdos     rmdir           tee
    atmconfig       date            fsck            hostname        md5             nextboot        route           test
    badsect         dd              fsck_4.2bsd     id              mdconfig        nos-tun         routed          tunefs
    bsdlabel        devfs           fsck_ffs        ifconfig        mdmfs           pgrep           rrestore        umount
    bunzip2         df              fsck_msdosfs    init            mkdir           ping            rtquery         unlink
    bzcat           dhclient        fsck_ufs        ipf             mknod           ping6           rtsol           unlzma
    bzip2           dhclient-script fsdb            kenv            more            pkill           savecore        unxz
    camcontrol      disklabel       fsirand         kill            mount           ps              sed             vi
    cat             dmesg           gbde            kldconfig       mount_cd9660    pwd             setfacl         whoami
    ccdconfig       dump            geom            kldload         mount_msdosfs   rcorder         sh              xz
    chflags         dumpfs          getfacl         kldstat         mount_nfs       rcp             spppcontrol     xzcat
    chgrp           dumpon          glabel          kldunload       mount_nullfs    rdump           stty            zcat
    chio            echo            gpart           ldconfig        mount_udf       realpath        swapon          zdb
    chmod           ed              groups          less            mount_unionfs   reboot          sync            zfs
    chown           ex              gunzip          link            mt              red             sysctl          zpool
    chroot          expr            gzcat           ln              mv              rescue          tail
    clri            fastboot        gzip            ls              nc              restore         tar
    cp              fasthalt        halt            lzcat           newfs           rm              tcsh
    

    Il s'agit en fait d'un gros binaire statique de 7.7M généré avec crunchgen(1)