🛡️ 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.admin
identifier.steam:110000112345678
resource.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 allow
global a não ser em scripts confiáveis. - 🧪 Utilize
test_ace
para diagnosticar permissões. - 🔐 Use
restricted
noox_lib
para proteger comandos. - 📋 Scripts como
zdiscord
,qb-adminmenu
,ox_target
e 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. 🚀