cles : un chmod refuse ne doit pas annuler une verification reussie
Some checks are pending
verifier / verifier (push) Waiting to run

Une cle USB est le plus souvent en FAT32 ou exFAT — pas de permissions Unix.
Le chmod de la derniere ligne y echoue, et le script serait mort APRES avoir
ecrit et verifie l archive : une trace d erreur sur un travail termine, au pire
moment pour semer un doute.

On le dit plutot que de le taire : sur un support sans droits, l archive est
lisible par qui branche la cle. C est le chiffrement qui protege, pas le support.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
This commit is contained in:
Daniel Allaire 2026-09-05 11:16:45 -04:00
parent bebdb84212
commit 3eff217bd5

View file

@ -192,8 +192,26 @@ def main() -> int:
print(f" ! {e}", file=sys.stderr)
return 1
archive.chmod(0o600)
# UN `chmod` QUI ECHOUE NE DOIT PAS ANNULER UNE VERIFICATION REUSSIE.
#
# Une cle USB est le plus souvent en FAT32 ou exFAT — des systemes qui n'ont pas de
# permissions Unix. `chmod` y echoue ou n'a aucun effet, selon les options de montage.
# Sans cette garde, le script mourrait sur sa DERNIERE ligne, apres avoir ecrit et
# verifie l'archive : l'exploitant verrait une trace d'erreur et douterait d'un
# travail pourtant termine. Le pire moment pour semer un doute.
#
# On le DIT plutot que de le taire : sur un support sans permissions, l'archive est
# lisible par quiconque branche la cle. C'est precisement pourquoi elle est chiffree —
# mais il faut le savoir pour choisir ou ranger la cle.
try:
archive.chmod(0o600)
acces = "0600 (lisible par toi seul)"
except OSError:
acces = ("permissions non applicables — support sans droits Unix (FAT/exFAT). "
"L'archive est lisible par qui branche la cle : c'est le chiffrement "
"qui protege, pas le support.")
print(f" VERIFIE : {len(attendu)} fichier(s) relus, empreintes identiques.")
print(f" Acces : {acces}")
print(f" Archive : {archive} ({archive.stat().st_size} octets)\n")
print(" IL RESTE DEUX GESTES, ET ILS NE SONT PAS FACULTATIFS :")
print(" 1. Ranger la phrase de passe AILLEURS que ce support. Separes, ils ne")