Niveau de log et diagnostic
Changer le niveau a chaud
[log]
level = "debug"
Enregistrer le fichier suffit : le niveau change en quelques instants, sans
redemarrage, comme pour les fichiers d’utilisateurs et de roles. Sous Unix,
kill -HUP applique l’edition sans attendre la surveillance du fichier.
level | Effet |
|---|---|
trace, debug | plus de detail, pour CraftFileGate seul ; les dependances (russh, hyper, le SDK AWS) restent a info |
info (defaut) | le fonctionnement normal |
warn, error, off | moins de lignes, pour tout le processus, dependances comprises |
level prend une seule valeur, pas une chaine de directives. La piste
d’audit n’en depend pas : elle reste a info.
Dans [log], seuls level, audit et les refusal_summary_* s’appliquent
a chaud ; le reste attend un redemarrage (voir
Rechargement).
Qui decide du niveau
| Source | Priorite | A chaud |
|---|---|---|
RUST_LOG | la plus forte : remplace tout le filtre | non : le niveau reste le sien pour la vie du processus |
CRAFT_FILE_GATE_LOG_LEVEL | passe avant le fichier | le fichier n’est plus suivi tant qu’elle est posee |
[log] level | le defaut | oui |
La premiere ligne du journal dit le filtre en vigueur et sa source :
INFO log filter in force filter="info,craft_file_gate=info,audit=info,opentelemetry_sdk=off" source="config [log] level"
RUST_LOG, pour aller plus loin
RUST_LOG donne le detail d’une dependance, par exemple le trace de russh.
Il remplace la chaine entiere, y compris le audit=info que le serveur
ajoute toujours : ecrivez-le vous-meme.
RUST_LOG=warn,russh=trace,audit=info
| Directive | Cible |
|---|---|
craft_file_gate=debug | le serveur (le nom du crate, avec des _) |
audit=info | la piste d’audit ; audit=warn n’en garde que les refus et les erreurs |
russh=trace | le protocole SSH |
Comprendre un refus d’authentification
La ligne d’audit d’un mot de passe refuse ne dit pas pourquoi : distinguer
« utilisateur inconnu » de « mot de passe faux » revelerait quels comptes
existent, et les journaux voyagent loin. Le detail est au niveau debug,
pour l’exploitant seul.
DEBUG local password authentication rejected username=alice reason="password does not match the stored hash"
DEBUG local password authentication rejected username=bob reason="no such user in the users file"
debug donne aussi les comptes charges (local user store contents, champ
usernames) ; info n’en dit que le nombre (local user store loaded).
Pour verifier un hash sans serveur :
echo -n "mot-de-passe" | craft-file-gate verify-password '$argon2id$v=19$...'
Revenez a info une fois le diagnostic fait. Les autres refus portent
leur cause dans reason : Depannage.
Un changement a chaud ecrit INFO log level reloaded (level, source,
filter). Sous level = "warn" ou plus severe, ces annonces partent sur
stderr, prefixees craft-file-gate: : l’annonce d’un filtre n’est jamais
etouffee par lui.