Guide complet des permissions ACE pour FiveM
Published on November 7, 2025 at 09:53 PM

Ce guide explique comment configurer le système de permissions ACE (Access Control Entry) sur votre serveur FiveM pour gérer les droits d'accès des joueurs et administrateurs.
# Guide complet des permissions ACE pour FiveM
## Qu'est-ce que le système ACE ?
ACE (Access Control Entry) est le système de permissions natif de FiveM qui permet de :
- **Contrôler l'accès** aux commandes et fonctionnalités
- **Créer des groupes** de permissions (admin, modo, VIP, etc.)
- **Gérer les droits** de manière hiérarchique
- **Sécuriser** les ressources et commandes sensibles
## Concepts de base
### Les trois éléments principaux
**1. Principal (Identité)**
Un principal est l'identité d'un joueur ou d'un groupe :
```cfg
identifier.steam:110000xxxxxx # Identifiant Steam
identifier.license:xxxxxx # License Rockstar
identifier.discord:xxxxxx # ID Discord
identifier.fivem:xxxxxx # ID FiveM
group.admin # Groupe
```
**2. ACE (Permission)**
Une permission spécifique :
```cfg
command.kick # Permission de kick
command.ban # Permission de ban
resource.admin_menu # Accès à une ressource
```
**3. Allow/Deny**
Autoriser ou refuser l'accès :
```cfg
allow # Autorise la permission
deny # Refuse la permission
```
## Structure et hiérarchie
### Ordre d'exécution
FiveM traite les permissions dans cet ordre :
1. **Permissions spécifiques du joueur** (identifier)
2. **Permissions de groupe** (group)
3. **Permissions héritées** (inheritance)
### Principe d'héritage
Les groupes peuvent hériter des permissions d'autres groupes :
```
superadmin → admin → moderateur → joueur
```
Un superadmin a toutes les permissions d'admin, qui a toutes celles de modérateur, etc.
## Configuration dans server.cfg
### Syntaxe de base
```cfg
# Ajouter une permission
add_ace
# Ajouter un principal à un groupe
add_principal
# Héritage entre groupes
add_ace allow
```
## Exemples de configuration
### Configuration simple : Un administrateur
```cfg
# Créer le groupe admin
add_ace group.admin command allow
# Ajouter un joueur au groupe admin
add_principal identifier.steam:110000xxxxxx group.admin
```
Cette configuration donne **toutes** les commandes à l'admin.
### Configuration avancée : Structure complète
```cfg
####################################
# SYSTÈME DE PERMISSIONS ACE
####################################
# ===== GROUPE SUPERADMIN =====
# Tous les droits, y compris txAdmin
add_ace group.superadmin command allow
add_ace group.superadmin resource allow
add_ace group.superadmin builtin.everyone allow
# Accès txAdmin
add_principal identifier.steam:110000xxxxxx group.superadmin
# ===== GROUPE ADMIN =====
# Hérite des droits modérateur + droits supplémentaires
add_ace group.admin group.moderator allow
# Permissions spécifiques admin
add_ace group.admin command.restart allow
add_ace group.admin command.stop allow
add_ace group.admin command.start allow
add_ace group.admin command.refresh allow
add_ace group.admin command.ensure allow
add_ace group.admin command.setjob allow
add_ace group.admin command.giveitem allow
add_ace group.admin command.givemoney allow
add_ace group.admin command.car allow
add_ace group.admin command.dv allow
add_ace group.admin command.tp allow
add_ace group.admin command.tpto allow
add_ace group.admin command.bring allow
add_ace group.admin command.freeze allow
add_ace group.admin command.unban allow
add_ace group.admin command.clearinventory allow
add_ace group.admin command.revive allow
add_ace group.admin command.setcoords allow
add_ace group.admin command.setmodel allow
# Ajouter des administrateurs
add_principal identifier.steam:110000yyyyyy group.admin
add_principal identifier.license:xxxxxx group.admin
# ===== GROUPE MODERATEUR =====
# Permissions de modération de base
add_ace group.moderator command.kick allow
add_ace group.moderator command.ban allow
add_ace group.moderator command.warn allow
add_ace group.moderator command.mute allow
add_ace group.moderator command.unmute allow
add_ace group.moderator command.screenshot allow
add_ace group.moderator command.spectate allow
add_ace group.moderator command.goto allow
add_ace group.moderator command.announce allow
# Ajouter des modérateurs
add_principal identifier.steam:110000zzzzzz group.moderator
add_principal identifier.discord:123456789 group.moderator
# ===== GROUPE SUPPORT =====
# Support technique limité
add_ace group.support command.tp allow
add_ace group.support command.tpto allow
add_ace group.support command.bring allow
add_ace group.support command.revive allow
add_ace group.support command.announce allow
# Ajouter du personnel support
add_principal identifier.steam:110000aaaaaa group.support
# ===== GROUPE VIP =====
# Avantages VIP sans permissions admin
add_ace group.vip vip.priority allow
add_ace group.vip vip.customskin allow
add_ace group.vip vip.spawnvehicle allow
# Ajouter des VIP
add_principal identifier.steam:110000bbbbbb group.vip
add_principal identifier.license:yyyyyy group.vip
# ===== PERMISSIONS SPÉCIALES =====
# Bloquer certaines commandes pour tout le monde sauf admin
add_ace builtin.everyone command.quit deny
add_ace builtin.everyone command.restart deny
add_ace group.admin command.quit allow
add_ace group.admin command.restart allow
```
## Types d'identifiants
### Steam ID
Le plus courant et recommandé :
```cfg
add_principal identifier.steam:110000xxxxxx group.admin
```
**Comment le trouver** :
1. Le joueur se connecte au serveur
2. Dans la console serveur, tapez `status`
3. Cherchez la ligne avec le pseudo du joueur
4. Copiez l'identifiant qui commence par `steam:`
### License (Rockstar)
```cfg
add_principal identifier.license:xxxxxxxxxxxxxx group.admin
```
### Discord ID
```cfg
add_principal identifier.discord:123456789012345678 group.admin
```
**Comment le trouver** :
1. Activez le mode développeur Discord
2. Clic droit sur l'utilisateur → Copier l'ID
### FiveM ID
```cfg
add_principal identifier.fivem:xxxxxx group.admin
```
### IP (Non recommandé)
```cfg
add_principal identifier.ip:192.168.1.1 group.admin
```
**Attention** : Les IP peuvent changer, utilisez plutôt Steam/Discord.
## Permissions pour ressources spécifiques
### Restreindre l'accès à une ressource
```cfg
# Bloquer la ressource admin_menu pour tout le monde
add_ace builtin.everyone resource.admin_menu deny
# Autoriser seulement les admins
add_ace group.admin resource.admin_menu allow
```
### Permissions personnalisées dans les scripts
Vos scripts peuvent vérifier des permissions personnalisées :
```cfg
# Définir une permission personnalisée
add_ace group.police police.armory allow
add_ace group.police police.vehicle allow
```
Dans votre script :
```lua
if IsPlayerAceAllowed(source, 'police.armory') then
-- Le joueur peut accéder à l'armurerie
end
```
## Configuration avec txAdmin
### Accès à txAdmin
```cfg
# Groupe pour accès complet txAdmin
add_ace group.superadmin txadmin allow
# Ajouter un administrateur
add_principal identifier.steam:110000xxxxxx group.superadmin
```
### Permissions txAdmin spécifiques
```cfg
# Permissions granulaires txAdmin
add_ace group.admin txadmin.view allow
add_ace group.admin txadmin.control allow
add_ace group.superadmin txadmin.settings allow
```
## Commandes utiles en jeu
### Vérifier les permissions d'un joueur
En tant qu'admin, dans la console F8 :
```
test_ace
```
Exemple :
```
test_ace steam:110000xxxxxx command.kick
```
Retourne `true` ou `false`.
### Lister les ACE actifs
```
list_aces
```
Affiche toutes les permissions actuellement définies.
## Exemples par type de serveur
### Serveur Roleplay
```cfg
# Police
add_ace group.police police.menu allow
add_ace group.police police.armory allow
add_ace group.police police.handcuff allow
add_ace group.police police.vehicle allow
add_ace group.police command.revive deny
# EMS
add_ace group.ems ems.menu allow
add_ace group.ems ems.vehicle allow
add_ace group.ems command.revive allow
add_ace group.ems command.heal allow
# Mécano
add_ace group.mechanic mechanic.menu allow
add_ace group.mechanic mechanic.repair allow
add_ace group.mechanic mechanic.vehicle allow
# Staff
add_ace group.staff command.tp allow
add_ace group.staff command.spectate allow
add_ace group.staff command.noclip allow
```
### Serveur Freeroam
```cfg
# VIP accès véhicules premium
add_ace group.vip vehicle.premium allow
add_ace group.vip spawn.weapon allow
# Donateurs
add_ace group.donator spawn.custom allow
add_ace group.donator teleport.anywhere allow
# Admin freeroam
add_ace group.admin command.weapon allow
add_ace group.admin command.skin allow
add_ace group.admin command.god allow
```
## Sécurité et bonnes pratiques
### Principe du moindre privilège
Donnez **uniquement** les permissions nécessaires :
```cfg
# ❌ MAUVAIS : Tout donner
add_ace group.moderator command allow
# ✅ BON : Permissions spécifiques
add_ace group.moderator command.kick allow
add_ace group.moderator command.ban allow
add_ace group.moderator command.warn allow
```
### Protéger les commandes dangereuses
```cfg
# Bloquer les commandes système pour tout le monde
add_ace builtin.everyone command.restart deny
add_ace builtin.everyone command.stop deny
add_ace builtin.everyone command.quit deny
add_ace builtin.everyone command.exec deny
# Autoriser seulement les superadmins
add_ace group.superadmin command.restart allow
add_ace group.superadmin command.stop allow
```
### Utiliser plusieurs identifiants
Pour plus de sécurité, combinez Steam + Discord :
```cfg
# Nécessite STEAM ET Discord
add_principal identifier.steam:110000xxxxxx group.admin_steam
add_principal identifier.discord:123456789 group.admin_discord
add_ace group.admin_combined command allow
# Les deux doivent être présents
add_principal group.admin_steam group.admin_combined
add_principal group.admin_discord group.admin_combined
```
### Logs et audit
Activez les logs pour suivre qui utilise quelles commandes :
```cfg
# Dans server.cfg
set sv_logLevel "info"
set sv_scriptHookAllowed 0
```
## Dépannage
### Les permissions ne fonctionnent pas
**Vérifications** :
1. Redémarrez complètement le serveur (pas juste `refresh`)
2. Vérifiez l'orthographe exacte des identifiants
3. Utilisez `status` en console pour voir les identifiants connectés
4. Les identifiants sont sensibles à la casse
### Commande refusée malgré les permissions
**Causes possibles** :
- Le script lui-même bloque la commande
- Conflit avec un autre système de permissions (ESX, QBCore)
- Permission mal écrite dans server.cfg
**Solution** :
```cfg
# Testez avec une permission globale temporairement
add_ace identifier.steam:110000xxxxxx command allow
```
### Les groupes ne s'appliquent pas
**Vérifiez l'ordre** :
```cfg
# ❌ MAUVAIS : Le groupe n'existe pas encore
add_principal identifier.steam:xxx group.admin
add_ace group.admin command allow
# ✅ BON : Créer le groupe d'abord
add_ace group.admin command allow
add_principal identifier.steam:xxx group.admin
```
### Impossible de se connecter à txAdmin
**Vérifiez** :
```cfg
# Assurez-vous d'avoir la permission txadmin
add_ace group.superadmin txadmin allow
add_principal identifier.steam:110000xxxxxx group.superadmin
```
## Intégration avec ESX/QBCore
### ESX avec ACE
ESX a son propre système de groupes, mais peut utiliser ACE :
```cfg
# Donner les permissions ESX admin
add_ace group.admin command.setjob allow
add_ace group.admin command.givemoney allow
# Lier l'ACE avec le groupe ESX
add_principal identifier.steam:xxx group.admin
```
Dans la base de données ESX (`users`), mettez aussi le groupe à `admin`.
### QBCore avec ACE
QBCore utilise les permissions ACE nativement :
```cfg
# Dans server.cfg
add_ace group.god command allow
add_ace group.admin qbcore.admin allow
# Dans qb-core/server/main.lua
QBCore.Config.Server.Permissions = {
['god'] = {
'steam:110000xxxxxx',
},
}
```
## Permissions avancées
### Permissions temporaires
Utilisez un script pour donner des permissions temporaires :
```lua
-- Côté serveur
ExecuteCommand(string.format('add_principal identifier.steam:%s group.temp_admin', hex))
-- Retirer après X temps
SetTimeout(3600000, function() -- 1 heure
ExecuteCommand(string.format('remove_principal identifier.steam:%s group.temp_admin', hex))
end)
```
### Permissions conditionnelles
Dans vos scripts, vérifiez plusieurs conditions :
```lua
if IsPlayerAceAllowed(source, 'police.menu') and
GetPlayerRoutingBucket(source) == 0 and
IsPlayerOnDuty(source) then
-- Ouvrir le menu police
end
```
### Wildcard (Joker)
Utilisez `.*` pour donner accès à toutes les sous-permissions :
```cfg
# Toutes les commandes police
add_ace group.police command.police.* allow
# Équivalent à :
# command.police.arrest
# command.police.handcuff
# command.police.fine
# etc.
```
## Exemple de configuration complète
Voici un exemple de configuration ACE complète pour un serveur roleplay :
```cfg
####################################
# CONFIGURATION ACE COMPLÈTE
####################################
# ===== PERMISSIONS GLOBALES =====
# Bloquer tout par défaut
add_ace builtin.everyone command.restart deny
add_ace builtin.everyone command.stop deny
add_ace builtin.everyone command.exec deny
# ===== SUPERADMIN =====
add_ace group.god command allow
add_ace group.god txadmin allow
add_principal identifier.steam:110000xxxxxx group.god
# ===== ADMIN =====
add_ace group.admin group.moderator allow
add_ace group.admin command.restart allow
add_ace group.admin command.setjob allow
add_ace group.admin command.givemoney allow
add_ace group.admin command.giveitem allow
add_ace group.admin command.car allow
add_principal identifier.steam:110000yyyyyy group.admin
# ===== MODERATEUR =====
add_ace group.moderator group.support allow
add_ace group.moderator command.kick allow
add_ace group.moderator command.ban allow
add_ace group.moderator command.warn allow
add_principal identifier.discord:123456789 group.moderator
# ===== SUPPORT =====
add_ace group.support command.tp allow
add_ace group.support command.revive allow
add_ace group.support command.announce allow
add_principal identifier.steam:110000zzzzzz group.support
# ===== POLICE =====
add_ace group.police police.menu allow
add_ace group.police police.handcuff allow
add_ace group.police police.drag allow
# ===== EMS =====
add_ace group.ems ems.menu allow
add_ace group.ems command.revive allow
add_ace group.ems command.heal allow
# ===== VIP =====
add_ace group.vip vip.priority allow
add_ace group.vip vip.customskin allow
```
## Conclusion
Le système ACE de FiveM est puissant et flexible. En suivant ce guide, vous pouvez créer une structure de permissions sécurisée et hiérarchique pour votre serveur.
**Points clés à retenir** :
- Utilisez des groupes plutôt que des permissions individuelles
- Appliquez le principe du moindre privilège
- Utilisez Steam ID comme identifiant principal
- Testez toujours après modification
- Documentez vos permissions
Pour plus d'informations, consultez la documentation officielle FiveM sur les ACE.














