⟳ : rechargee a chaud ; sans marque : prise au redemarrage. Voir Rechargement.
Voir Authentification, Verification des mots de passe.
| Cle | Type | Defaut | Effet |
auth | table | (obligatoire) | l’authentification et les sources de roles |
auth.jwt_sentinel_username | chaine | jwt | le nom SSH qui demande une authentification par JWT (le jeton en mot de passe) |
auth.timeout_secs | entier | 5 | delai d’un appel au service d’autorisation |
auth.authz_base_url | URL | absent | service qui traduit des authorities en noms de roles (POST /authz/resolve) ; sans lui, seules les authorities qui sont des noms de roles comptent |
auth.roles_file | chemin | roles.toml a cote, s’il existe | fichier des [[roles]] et [[backends]] ; son contenu est relu a chaud |
auth.users_file | chemin | users.toml a cote, s’il existe | fichier des [[users]] ; son contenu est relu a chaud |
auth.hash_workers | entier | les CPU vus (quota cgroup compris), au plus 2 | fils qui verifient les mots de passe, simultanement ; chacun tient le m argon2 de son hash ; 1 a 1024 ; CRAFT_FILE_GATE_HASH_WORKERS |
auth.hash_queue | entier | 1024 | verifications qui peuvent attendre un fil ; 1 a 65536 ; CRAFT_FILE_GATE_HASH_QUEUE |
auth.hash_per_address | entier | 4 | verifications en vol ou en file pour une adresse ; 1 a 66560 ; sans plafond pour une adresse de whitelist_ips de la liste de bans de la porte |
auth.users ⟳ | tableau de tables | - | [[auth.users]], comme [[users]] ; la racine l’emporte |
auth.roles ⟳ | tableau de tables | - | [[auth.roles]], comme [[roles]] ; la racine l’emporte |
auth.backends ⟳ | tableau de tables | - | [[auth.backends]], comme [[backends]] ; la racine l’emporte |
| Cle | Type | Defaut | Effet |
auth.methods | table | - | les sources d’identite actives |
auth.methods.jwt | table | - | la methode JWT |
auth.methods.jwt.enabled | booleen | true | accepter les JWT (SFTP sous le nom sentinel, REST en Bearer) ; exige [auth.jwt] |
auth.methods.local | table | - | le magasin d’utilisateurs local |
auth.methods.local.enabled | booleen | false | activer le magasin local ([[users]] ou users_file) |
auth.methods.local.password | booleen | true | accepter le mot de passe comme preuve |
auth.methods.local.pubkey | booleen | true | accepter la cle publique SSH comme preuve |
auth.methods.local.allow_sha512_crypt | booleen | false | accepter aussi les hashes sha512-crypt, $6$ (migration) |
auth.methods.local.allow_bcrypt | booleen | false | accepter aussi les hashes bcrypt, $2a$, $2b$, $2y$ (migration) |
auth.methods.local.users_file | chemin | absent | fichier des utilisateurs, comme auth.users_file |
auth.methods.local.max_argon2_memory_kib | entier | absent : rien n’est verifie | budget memoire d’une verification, en Kio ; un hash qui le depasse est nomme au chargement ; au moins 1 |
| Cle | Type | Defaut | Effet |
auth.jwt | table | absente : aucun JWT verifie | la verification des JWT : une source de cle, et les claims |
auth.jwt.secret | chaine | absent | secret HMAC (HS256/384/512) ; CRAFT_FILE_GATE_JWT_SECRET ou _FILE |
auth.jwt.public_key_file | chemin | absent | cle publique PEM (RS*, ES*) |
auth.jwt.jwks_url | URL | absent | point JWKS du fournisseur d’identite ; exclusif de secret et public_key_file |
auth.jwt.jwks_refresh_interval_secs | entier | 3600 | periode du rafraichissement JWKS ; au moins 1 |
auth.jwt.algorithm | chaine | HS256 | HS256, HS384, HS512, RS256, RS384, RS512, ES256 ou ES384 |
auth.jwt.username_path | chaine | /sub | JSON Pointer du nom de l’utilisateur dans le jeton |
auth.jwt.authorities_path | chaine | /groups | JSON Pointer de ses authorities (roles) |
auth.jwt.issuer | chaine | absent | si present, iss est exige et compare |
auth.jwt.audience | chaine | absent | si present, aud est exige et compare |
| Cle | Type | Defaut | Effet |
users ⟳ | tableau de tables | - | les utilisateurs locaux ; aussi dans users_file |
users[].username ⟳ | chaine | (obligatoire) | le nom ; unique |
users[].password_hash ⟳ | chaine | (obligatoire) | hash argon2 (craft-file-gate hash-password) ; jamais en clair |
users[].authorized_keys ⟳ | liste | [] | cles publiques SSH, une ligne authorized_keys chacune |
users[].authorities ⟳ | liste | [] | les noms des roles de l’utilisateur |
Voir Utilisateurs, roles et montages.
| Cle | Type | Defaut | Effet |
roles ⟳ | tableau de tables | (obligatoire), ici ou dans roles_file | les roles ; aussi dans roles_file |
roles[].name ⟳ | chaine | (obligatoire) | le nom du role, unique ; c’est lui que citent les authorities |
roles[].user_key_algorithms ⟳ | liste | [] | algorithmes de signature de cle SSH permis en plus aux utilisateurs locaux de ce role, par leur nom (voir Porte SFTP) |
roles[].mounts ⟳ | tableau de tables | (obligatoire) | les montages du role, [[roles.mounts]] ; au moins un |
| Cle | Type | Defaut | Effet |
roles[].mounts[].backend ⟳ | chaine | (obligatoire) | le backend monte, par le name d’un [[backends]] |
roles[].mounts[].mount_path ⟳ | chemin | / | ou le montage apparait pour l’utilisateur : absolu, sans ., .., // ni / final |
roles[].mounts[].home_dir ⟳ | chemin | / | ou le montage commence sur le stockage ; {username} y devient le nom de l’utilisateur |
roles[].mounts[].create_home ⟳ | booleen | false | creer home_dir a la connexion s’il manque ; backend local seulement, voir Local |
roles[].mounts[].max_file_mb ⟳ | entier | absent : aucun plafond | taille maximale d’un fichier envoye, en Mo (1 048 576 octets) ; 0 : aucun envoi |
roles[].mounts[].acl ⟳ | tableau de tables | [] : tout refuse | les droits du montage, [[roles.mounts.acl]], voir ACL |
roles[].mounts[].hidden_stores ⟳ | table | celle du backend | ecritures atomiques de ce montage, cle par cle (voir Uploads) |
roles[].mounts[].hidden_stores.enabled ⟳ | booleen | celui du backend | voir server.hidden_stores.enabled |
roles[].mounts[].hidden_stores.prefix ⟳ | chaine | celui du backend | voir server.hidden_stores.prefix |
roles[].mounts[].hidden_stores.extension ⟳ | chaine | celle du backend | voir server.hidden_stores.extension |
| Cle | Type | Defaut | Effet |
roles[].mounts[].acl[].path ⟳ | chemin | (obligatoire) | chemin gouverne, relatif au montage |
roles[].mounts[].acl[].rights ⟳ | liste | (obligatoire) | parmi read, write, list, delete, rename |
roles[].mounts[].acl[].recursive ⟳ | booleen | false | true : l’entree gouverne aussi tout ce qui est sous path |