Configurer les permissions admin sur S&Box (users/config.json)

Configurer les permissions admin sur S&Box (users/config.json)

Le système de permissions S&Box repose sur un fichier JSON et des "claims" : kick, ban, restart, ou claims custom définis par le gamemode. Guide complet avec exemples et bonnes pratiques.

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 :

  1. Ouvre Files
  2. Navigue vers le dossier users/
  3. Si config.json n'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

ClaimEffet
kickPeut exclure un joueur de la session
banPeut bannir
restartPeut 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 :

  1. Sauvegarde le fichier
  2. Redémarre le serveur depuis la Console du panel
  3. 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.

Ressources

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres