🛡️ Guia Rápido de Permissões no FiveM
Este guia tem como objetivo explicar como funcionam as permissões no FiveM, como configurá-las corretamente, e como utilizá-las em conjunto com recursos como ox_lib e scripts que dependem de permissões por ACE.
🧠 Conceitos Fundamentais
🔑 Principals
Um principal representa uma entidade que pode receber permissões:
group.adminidentifier.steam:110000112345678resource.meu_script
🎯 Objetos
Um objeto representa uma ação ou permissão específica:
command(acesso a qualquer comando)command.giveitem(acesso a um comando específico)admin,mod,qbadmin.join(padrões usados por scripts)
✅ Permissão: allow / deny
Define se o principal tem acesso (allow) ou não (deny) ao objeto.
⚙️ Comandos de Controle de Acesso
➕ add_ace
Adiciona uma permissão para um principal sobre um objeto.
add_ace [principal] [object] [allow|deny]Exemplo:
add_ace group.admin command.giveitem allow❌ remove_ace
Remove uma permissão existente.
remove_ace [principal] [object] [allow|deny]Exemplo:
remove_ace identifier.steam:110000112345678 command.apple deny👥 add_principal
Faz um principal herdar permissões de outro.
add_principal [child] [parent]Exemplo:
add_principal identifier.steam:110000112345678 group.admin🔁 remove_principal
Remove uma herança entre principals.
remove_principal [child] [parent]🧪 test_ace
Testa se um principal tem permissão para um objeto.
test_ace group.admin command.adminstuff📦 Integração com ox_lib
A ox_lib permite registrar comandos com permissões diretamente.
💡 Exemplo:
lib.addCommand('giveitem', {
help = 'Gives an item to a player',
params = {
{ name = 'target', type = 'playerId', help = 'Target player\'s server id' },
{ name = 'item', type = 'string', help = 'Name of the item to give' },
{ name = 'count', type = 'number', help = 'Amount to give', optional = true },
{ name = 'metatype', help = 'Sets metadata.type', optional = true }
},
restricted = 'group.admin'
}, function(source, args, raw)
Inventory.AddItem(args.target, args.item, args.count or 1, args.metatype)
end)O campo restricted aceita:
false: comando livretrue: comando restrito a admins'group.admin': ACE específico{'group.admin', 'group.mod'}: múltiplos grupos
📝 Exemplo de Arquivo de Permissões (server.cfg)
# Permissão total para comandos do grupo admin
group.admin command allow
# Permitir qbx_core executar comandos
add_ace resource.qbx_core command allow
# ox_lib - permitir controle de ACEs
add_ace resource.ox_lib command.add_ace allow
add_ace resource.ox_lib command.remove_ace allow
add_ace resource.ox_lib command.add_principal allow
add_ace resource.ox_lib command.remove_principal allow
# Permissões personalizadas para grupos
add_ace group.admin admin allow
add_ace group.mod mod allow
add_ace group.support support allow
add_ace group.support qbadmin.join allow
# Herança de grupos
add_principal group.admin group.mod
add_principal group.mod group.support
# Permitir comandos de scripts
add_ace resource.zdiscord command.add_principal allow
add_ace resource.zdiscord command.remove_principal allow
💡 Dicas e Boas Práticas
- 🗂️ Sempre organize seus grupos de permissão e mantenha padrões de nome.
- 🚫 Evite dar
command allowglobal a não ser em scripts confiáveis. - 🧪 Utilize
test_acepara diagnosticar permissões. - 🔐 Use
restrictednoox_libpara proteger comandos. - 📋 Scripts como
zdiscord,qb-adminmenu,ox_targete outros fazem uso extensivo de ACEs, então mantenha sua configuração revisada.
🏁 Conclusão
Compreender e configurar corretamente as permissões no FiveM garante mais segurança, organização e controle sobre sua comunidade e scripts. Use este guia como referência sempre que precisar criar ou auditar suas permissões. 🚀