Introduction
Pas de groupes, pas de hiérarchie automatique : S&Box gère les permissions via un fichier JSON unique (users/config.json) où chaque admin est listé par SteamID64 avec une liste de "claims". Le host (toi, le propriétaire du serveur) a implicitement tous les droits. Le système est volontairement minimaliste et déléguant : les gamemodes peuvent définir leurs propres claims.
Prérequis
- Un serveur S&Box actif chez VeryCloud
- Le SteamID64 des admins à ajouter (format
7656119xxxxxxxxxx) - Accès au gestionnaire Files du panel Wisp
Étape 1 : Récupérer un SteamID64
Plusieurs méthodes pour convertir un profil Steam en SteamID64 :
- Va sur https://steamid.io/ et colle l'URL de profil Steam
- Ou utilise un convertisseur depuis vanity URL → SteamID3 → SteamID64
Format attendu : 17 chiffres commençant par 7656119. Exemple : 76561198012345678.
💡 Note bien le SteamID64 entre guillemets dans le JSON, c'est une chaîne (le parser refuse les nombres).
Étape 2 : Localiser users/config.json
Dans le panel Wisp :
- Ouvre Files
- Navigue vers le dossier
users/ - Si
config.jsonn'existe pas, crée-le
Chemin typique : /home/container/users/config.json
Étape 3 : Structure du fichier
{
"Users": [
{
"SteamId": "76561198012345678",
"Name": "MathysAdmin",
"Claims": [ "kick", "ban", "restart" ]
},
{
"SteamId": "76561198098765432",
"Name": "ModoNuit",
"Claims": [ "kick" ]
}
]
}
SteamId: SteamID64 entre guillemets (string)Name: label libre pour ton usage (le serveur n'en fait rien)Claims: liste de strings, voir étape suivante
Étape 4 : Les claims standard documentés par Facepunch
| Claim | Effet |
|---|---|
kick | Peut exclure un joueur de la session |
ban | Peut bannir |
restart | Peut redémarrer le serveur |
Le host a tous les claims implicitement, donc tu n'as pas besoin de t'ajouter à ce fichier (sauf si tu veux retirer tes propres claims).
Étape 5 : Claims custom (définies par le gamemode)
Les claims sont des chaînes arbitraires. Un gamemode RP peut définir ses propres claims pour gater des fonctionnalités :
"Claims": [ "kick", "ban", "rp.giveitem", "rp.teleport", "rp.spectate" ]
Le gamemode vérifiera ces claims côté serveur via Connection.HasPermission("rp.giveitem"). La doc du gamemode (ou ton code C# si tu développes le tien) doit te donner la liste des claims disponibles.
⚠️ Les claims ne sont pas réseaux : un client ne peut pas vérifier ses propres claims pour afficher/cacher un bouton UI. Ne te repose pas dessus pour de l'affichage, uniquement pour des actions serveur.
Étape 6 : Appliquer les changements
users/config.json est lu au démarrage du serveur et lors de modifications à chaud dans certaines implémentations. Pour être sûr :
- Sauvegarde le fichier
- Redémarre le serveur depuis la Console du panel
- Vérifie dans la console qu'aucune erreur de parsing JSON n'apparaît
Étape 7 : Tester les permissions
Une fois redémarré, demande à l'admin concerné de tester ses claims :
- Tente de kick un joueur (commande du gamemode, ex :
/kick <player>) - Tente une commande non autorisée — elle doit échouer proprement
Si rien ne marche, vérifie la console serveur pour les erreurs de permissions.
Dépannage
Failed to parse users/config.json
- Le JSON a une virgule en trop ou une accolade manquante
- Utilise https://jsonlint.com/ pour valider la syntaxe
- Le SteamID doit être en string (guillemets), pas en nombre
L'admin n'a pas les droits
- SteamID64 correct ? (et pas le SteamID3
[U:1:xxxxx]) - Le claim utilisé correspond bien à ce que demande le gamemode ?
- Le serveur a-t-il été redémarré après la modif ?
Les changements ne s'appliquent pas
- Force un restart complet via Console → RESTART
- Si même après restart ça ne marche pas, vérifie que le fichier est bien dans
users/à la racine du conteneur
Commandes utiles
# Valider le JSON en ligne de commande (si tu as un shell)
cat users/config.json | python3 -m json.tool
# Convertir un SteamID via curl + API (besoin d'une API key Steam)
# Plus simple : utilise steamid.io
Conclusion
Le système de permissions S&Box est minimaliste et propre : un fichier JSON, des claims, le host a tous les droits. Pour des structures complexes (modos, modos confirmés, admins, superadmins), c'est au gamemode de gérer la hiérarchie en définissant ses propres claims.
Pour aller plus loin : créer des claims custom pour ton gamemode C#, intégrer avec un panel admin web externe, logguer les actions admin vers Discord.


















