Files
bastien 4f8bb61458 feat(cloudpex): site values out of the script, prompted at install into /etc/cloudpex.conf
cloudpex/cloudpex no longer carries the NAS host, share name, SMB user,
mount point or SMB version. It reads /etc/cloudpex.conf (root:root 0600,
KEY=value) line by line, never sources it, and dies with a hint when the
file is missing, incomplete or has a relative mount point.

cloudpex/install.sh prompts for the five values (regex-validated, re-asked
on bad input so the main installer never aborts), shows and keeps an
existing config unless answered n, and skips the config when no terminal
is attached. README (FR) + root README + CLAUDE.md updated.
2026-09-22 17:34:18 +02:00
..

cloudpex : montage à la demande d'un partage SMB (NAS)

cloudpex monte et démonte un partage SMB du NAS sur un point de montage local. Le mot de passe SMB est demandé à chaque montage. Rien n'est écrit sur disque, rien ne passe en argument (le mot de passe est transmis à mount.cifs par la variable d'environnement PASSWD, invisible dans ps).

Les valeurs propres au site (hôte du NAS, nom du partage, utilisateur SMB, point de montage, version SMB) ne sont pas dans le script. Elles sont demandées à l'installation et écrites dans /etc/cloudpex.conf, lisible par root seulement.

Pourquoi à la demande, et pas dans fstab

Sur l'ancien serveur le partage était monté en permanence, en écriture, avec uid=1000 forcé. Tout processus de l'utilisateur pouvait donc tout effacer, agents Claude compris. C'est ce qui a rendu l'incident du 21/09 total (voir RECOVERY/01-prochain-systeme/04-NAS-cloudpex-sauvegardes.md sur le partage).

Ce script applique la règle 2 de ce document :

  • montage à la demande, par un humain, jamais automatique au boot ;
  • aucun identifiant stocké (/root/.smbcredentials n'existe plus) ;
  • noexec,nosuid,nodev : rien ne s'exécute depuis le partage ;
  • dir_mode=0750, propriétaire = l'utilisateur qui a lancé sudo : les autres comptes (dont les comptes agents) ne voient pas le contenu.

Démonte quand tu as fini (cloudpex -u). Un partage monté reste effaçable par tes propres processus.

Usage

cloudpex        # monte (demande le mot de passe SMB)
cloudpex -s     # état
cloudpex -u     # démonte (alias : -d, dc, disconnect, disable)
cloudpex -h     # aide

Le script se relance lui-même via sudo : pas besoin de le préfixer.

Installation

./cloudpex/install.sh

Ce que ça fait, à l'identique de cette machine :

Cible Détail
/usr/local/bin/cloudpex copie du script, root:root, 0755
/etc/cloudpex.conf les cinq valeurs du site, demandées au clavier, root:root, 0600
point de montage créé vide (/mnt/cloudpex par défaut)
cifs-utils installé via apt-get seulement si mount.cifs manque

Questions posées (défaut entre crochets) :

Hôte du NAS (IP ou nom) :
Nom du partage SMB :
Utilisateur SMB :
Point de montage [/mnt/cloudpex] :
Version SMB [3.0] :

Réexécutable : si /etc/cloudpex.conf existe, il est affiché et gardé sauf réponse n. Sans terminal (curl | bash), le script est réinstallé mais la config n'est ni créée ni modifiée. ../install.sh appelle cet installeur sur Linux. Rien n'est monté à l'installation.

Changer de NAS, de partage ou de compte

Relance ./cloudpex/install.sh et réponds n à « La garder ? », ou édite /etc/cloudpex.conf en root (format CLÉ=valeur, une par ligne : HOST, SHARE, SMB_USER, MNT, SMB_VERS). Le script lit ce fichier ligne à ligne, il ne l'exécute jamais.

Dépannage

  • config absente : lance ./cloudpex/install.sh depuis un terminal.
  • Échec du montage : dmesg | tail (mot de passe, réseau, ou version SMB refusée par le NAS : essayer SMB_VERS=3.1.1 dans la config).
  • Démontage refusé (fichiers ouverts) : lsof +D <point de montage>, fermer, réessayer.