ACL do MTA: grupos, permissões e segurança
A ACL (Access Control List) define quem pode fazer o quê no seu servidor de MTA:SA: quais contas podem banir, quais resources podem acessar o banco de dados, quem pode reiniciar o servidor. É o coração da segurança.
Onde fica
No arquivo mods/deathmatch/acl.xml. Ele pode ser editado manualmente (com o servidor parado ou recarregando depois) ou por funções de script e pelo painel admin.
Os três conceitos
Grupos (group)
Reúnem objetos e ligam-nos a listas de direitos. Exemplos padrão: Everyone, Moderator, SuperModerator, Admin, Console, RPC.
Objetos (object)
Quem pertence ao grupo:
user.NomeDaConta— uma conta de jogador;resource.nomeDoResource— um resource;user.*/resource.*— todos (usado no grupo Everyone).
Listas de direitos (acl)
Definem permissões:
command.kick,command.ban,command.start— comandos;function.banPlayer,function.setAccountData— funções de script;general.ModifyOtherObjects,general.http— permissões gerais.
Exemplo
<group name="Moderator">
<acl name="Moderator" />
<object name="user.JoaoMod" />
</group>
<acl name="Moderator">
<right name="command.kick" access="true" />
<right name="command.mute" access="true" />
<right name="command.ban" access="false" />
</acl>
Como a permissão é decidida
Quando uma conta ou resource tenta algo, o MTA verifica os grupos dos quais ele faz parte. Uma permissão negada explicitamente tem peso na decisão — cuidado ao combinar grupos. Teste sempre as permissões depois de mudar.
Permissões de resources
Resources também precisam de permissões para funções sensíveis (banir, acessar contas, fazer requisições HTTP, iniciar outros resources). Duas formas:
- Adicionar o resource a um grupo (ex.:
resource.adminno grupo Admin); - ACL requests no
meta.xmldo resource, aprovadas pelo dono:
aclrequest list nomedoresource
aclrequest allow nomedoresource all
Regras de ouro
- Nunca dê permissões administrativas ao grupo
Everyone; - Coloque em
Adminsó resources em que você confia totalmente; - Crie grupos intermediários (ajudante, moderador) com o mínimo necessário;
- Mantenha o runcode fora do grupo Admin em produção (ou parado);
- Revise a ACL sempre que instalar um resource novo;
- Faça backup do
acl.xmlantes de mudanças.
Recarregando
Depois de editar o arquivo manualmente, recarregue a ACL (pelo painel admin ou reiniciando o servidor) e confirme se as mudanças surtiram efeito.
Hospede seu servidor com a VittHost
No MTASA-BR da VittHost, você edita a acl.xml pelo gerenciador de arquivos do painel Pterodactyl. Servidores no Brasil, proteção DDoS, MySQL incluso, downloads acelerados por nginx dedicado e teste grátis de 3 dias.