Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Multi-plateforme plat Décidé

Un seul moteur Rust, cinq carrosseries : binaires statiques musl cross-compilés, quatre écosystèmes de signature traités comme infrastructure de release, et une stratégie Synology assumée — non-root par dépôt tiers comme chemin nominal.

En clair — la valise autonome Un binaire « dynamique » classique emprunte ses outils au système qui l'héberge — et sur un NAS de 2018, la boîte à outils (la glibc) est vieille : le programme refuse de démarrer. Un binaire statique voyage avec sa propre valise : tout est dedans, il ne demande rien à personne. C'est le choix musl : le même exécutable tourne sur le NAS d'il y a huit ans et sur le serveur d'hier. Et comme tout Cairn est écrit en Rust, on fabrique ces valises pour chaque plateforme depuis le même code, en CI.

Décision 1 — Un binaire statique par cible

Cross-compilation Rust vers x86_64- et aarch64-unknown-linux-musl (outil cross) → binaires statiques, zéro dépendance glibc, mêmes fonctionnalités partout. Un seul codebase, pas de version « NAS » au rabais.

Décision 2 — La matrice de cibles v1

PlateformeFormatServiceSignature
Linuxbinaire statique + deb/rpmsystemdchecksums / sigstore
Windows x86_64MSIService Windows (SYSTEM)Authenticode EV — sinon SmartScreen effraie les clients
macOSPKG, binaire universel arm64+x86_64launchd daemonDeveloper ID + notarisation (obligatoire depuis 10.15)
SynologySPK (métadonnées DSM 7)init DSM, non-rootdépôt tiers — voir décision 3
QNAPQPKG (QDK)init QTSsignature QPKG (self-signed possible)

Architectures : x86_64 + aarch64 en v1 (couvre les NAS récents) ; armv7 (vieux modèles d’entrée de gamme) en best-effort plus tard.

Décision 3 — Synology : non-root par dépôt tiers, chemin nominal

Depuis DSM 7, un paquet ne peut tourner root que signé par Synology. Après analyse, ce n’est pas un problème — le chemin nominal est ailleurs :

  • Distribution par dépôt tiers — mécanisme officiel de DSM : l'utilisateur ajoute la source de paquets dans le Centre de paquets, le paquet apparaît dans l'onglet « Communauté » (DSM 7 affiche un avertissement « éditeur tiers » ; DSM 6 demande en plus de régler le niveau de confiance). Chemin éprouvé commercialement par des produits de backup existants : zéro gatekeeper, contrôle total du rythme de release.
  • Le non-root suffit pour le cas d'usage NAS. Le paquet reçoit l'accès aux dossiers partagés à sauvegarder — et qui peut lire un fichier peut lire ses xattrs : les SynoACL sont capturées sans root (vérifié empiriquement). Les snapshots btrfs ? Peu pertinents ici : un NAS est un serveur de fichiers, pas un serveur Exchange — l'échelle stat/re-stat couvre le fichier occasionnellement modifié, et les applis hébergées (Docker, bases) relèvent des hooks pre/post.
  • Ce qui reste réellement root-only — fichiers système DSM, xattrs trusted.*, création de snapshots — est marginal, et la règle « rapporter, jamais mentir » l'affiche proprement.
  • Signature / partenariat Synology : reclassé « seulement si un vrai besoin root émerge un jour ». Rien à engager maintenant.
  • Hors fondation : les contournements root (tâche planifiée, script sudo) — acceptables en dépannage documenté, jamais comme socle d'un produit : Synology peut fermer la porte à la prochaine mise à jour DSM.

Décision 4 — Les signatures comme infrastructure de release

En clair — quatre douanes, quatre passeports Chaque plateforme a sa douane : Apple exige un passeport (Developer ID) et un visa tamponné à chaque voyage (la notarisation de chaque build) ; Windows note la réputation du voyageur (SmartScreen — sans certificat EV, l'écran rouge fait fuir le client) ; Synology et QNAP ont leurs propres tampons. Quatre comptes, quatre certificats, quatre étapes de CI — à mettre en place dès le premier build public : rétrofitter la signature est toujours douloureux.

À traiter comme un composant du pipeline de release (section L) : certificats gérés comme des secrets d’infrastructure, notarisation (notarytool + stapler) et signatures automatisées en CI.

Décision 5 — Les privilèges par plateforme, consolidés

Tous les renvois accumulés (snapshots, xattrs) atterrissent ici :

PlateformeL’agent tourne enCe que ça permetCe qui manque sinon
Linux serveurrootsnapshots LVM/btrfs/ZFS, trusted.*, tout le FS
WindowsSYSTEMVSS, tous les fichiers, SACLsans SYSTEM : pas de VSS ni fichiers verrouillés
macOSroot + Full Disk Access (TCC)tout le FS — sans FDA, macOS cache Mail, Photos… même à rootFDA à accorder (déployable par MDM)
Synologyutilisateur de paquet (nominal)partages accordés + leurs SynoACL/xattrsfichiers système, trusted.*, snapshots — rapportés
QNAPselon QPKG (root possible)équivalent Linux si root

Périmètre

Les spécificités sémantiques des systèmes de fichiers — sensibilité à la casse, normalisation Unicode NFC/NFD, MAX_PATH Windows, noms réservés — restent au sujet dédié de la section O : cette page traite du packaging et du runtime, pas des chemins.