Lista de Controle de Acesso

From Multi Theft Auto: Wiki
Revision as of 20:00, 11 January 2013 by Ninguem (talk | contribs)
Jump to navigation Jump to search

O MTA inclui uma lista de controle total de acesso (ACL, Access Control List ou Lista de Controle de Acesso), que permite proteger e limitar o acesso ao servidor, suas funções e recursos de qualquer forma que você quiser.

Um conceito chave da ACL MTA (a ACLs em geral) é que você dá a um determinado objeto especifico de um conjunto de direitos. No caso do MTA, os objetos são uma das duas coisas : recursos ou usuários. Existem inúmeros direitos disponíveis no MTA, eles estão principalmente concentradas sobre as funções do lado do servidor ou server-side scripting.

O que significa, que a ACL permite que você escolha exatamente o que funciona, ou oque um recurso ou usuário pode executar. Obviamente este recurso é essencial, por exemplo, prevenção dos jogadores do seu servidor ser capaz de banir outros jogadores, ou impedir que os novos recursos não testados façam o mesmo.

É claro, com grande poder vem grandes responsabilidades e é muito facilmente possível romper completamente os recursos, por exemplo, a desativação spawnPlayer para todos os recursos seria uma coisa ruim. Há situações em que você pode querer fazer isso - se você quiser forçar todos os seus recursos para usar o gerenciador de desova de recursos, por exemplo, mas é medidas ainda mais rígidas.

Entendendo a ACL

Há em dois componentes principais ACL : os grupos e ACL-listas. Eles aparecem como nós <group name=""> nós e <acl name="" />. Sua finalidade:
1. Conceder permissão para usuários para controlar o servidor e usar comandos de recursos. Exemplos:

  • Permitindo que os administradores usem apenas a função giveweapon do freeroam.
  • Permitindo que todos os usuários para iniciem recursos.

2. Conceder permissão de recursos para usar funções de script e funções de outros recursos. Exemplos:

  • Permitem utilizar o recurso restartResource.
  • Permitir a utilização de recursos de chamada para as funções exportadas de outro script.

Grupos Padrões

MTA tem fornecido alguns grupos padrôes com permissões crescentes. Estes grupos são os seguintes:

  • Everyone
  • Moderator
  • SuperModerator
  • Admin
  • Console - Esta controla as permissões de pessoas que estão usando o console através <object name="user.Console" />
  • RPC - Remote Procedure Call. Especificamente concede acesso a callRemote só desativa comandos de recursos padrões. Verifique a função para obter detalhes.


Para explicar melhor, vou usar o grupo Everyone como exemplo. Por padrão, ele se parece com isso:

    <group name="Everyone">
        <acl name="Default" />
        <object name="user.*" />
        <object name="resource.*" />
    </group>

Você primeiro identificar o nome acl dentro do grupo. Ele define os poderes do grupo. Usuários e recursos de um determinado grupo tem os poderes estabelecidos na ACL-lista com o nome de "Default". Nota: Você vai notar que esse grupo é especial, na medida em que inclui todos os usuários e de recursos por meio de um asterisco (*) , onde o node do usuário ou recurso ficaria.

Agora, role para baixo a ACL e você verá a listagem <acl name="Default" />.Note que eu reduziram drasticamente esta lista devido à sua extensão.

    <acl name="Default">
        <right name="command.start" access="false" />
        <right name="command.stop" access="false" />
        <right name="command.stopall" access="false" />
        ...etc etc...
        <right name="function.executeCommandHandler" access="false" />
        <right name="function.setPlayerMuted" access="false" />
        <right name="function.restartResource" access="false" />
        ...etc etc...
        <right name="general.adminpanel" access="false" />
        <right name="general.tab_players" access="false" />
        <right name="general.tab_resources" access="false" />
        ...etc etc...
        <right name="command.freeze" access="false" />
        <right name="command.shout" access="false" />
        <right name="command.spectate" access="false" />
        ...etc etc...
    </acl>
  • Funções das entradas são funções MTA script. Por exemplo, se um recurso necessário para usar restartResource e ele estava no grupo 'Everyne' (com a lista 'Default') seria negado o acesso a restartResource e não funcionar corretamente.
  • Comandos são criados quando um recurso usa addCommandHandler. Um exemplo seria digitar /createvehicle [veículo] no chatbox para o recurso freeroam. Isto controla se os usuários do grupo ACL podem usar o comando.Os comandos não têm nenhum efeito sobre os recursos do grupo. Os comandos são apenas relacionada com os usuários.
    • Geral, é um grupo de nome personalizado direito criado pelo recurso administrativo, mas ele funciona com os mesmos princípios. O script trabalha com eles atraves do hasObjectPermissionTo.

Você vai notar que alguns grupos, tais como admin, tem vários nós <acl name="" />. Um exemplo é o grupo admin:

    <group name="Admin">
        <acl name="Moderator" />
        <acl name="SuperModerator" />
        <acl name="Admin" />
        <acl name="RPC" />
        <object name="resource.admin" />
        <object name="resource.webadmin" />
        <object name="user.Ransom" />
    </group>

Isso irá dar todas as permissões definidas em cada nó <acl name="" /> na ordem de apresentação. Assim, por exemplo, usando o grupo de administração, certifique-se de que os administradores têm autoridade total. Se houver conflito, é dada prioridade ao mais baixo. No exemplo acima

1. <acl name="Default"> define <right name="general.ModifyOtherObjects" access="false" />
2. <acl name="Admin"> define <right name="general.ModifyOtherObjects" access="true" />
3. Para todos os usuários e recursos do grupo será admin: <right name="general.ModifyOtherObjects" access="true"/>

Grupos e Recursos ACL

Você vai notar que há alguns outros grupos que vieram com MTA. Eles são identificados como recursos que vêm com a MTA. Se um recurso quer para designar direitos específicos ACL não previstas pelos grupos MTA padrão, ele pode criar a sua própria ACL nome e um grupo usá-lo. Mostraremos a entrada da AMX como um exemplo. AMX foi projetado para emular SA-MP scripts e ele precisa de um certo conjunto de permissões que não se enquadram bem nos grupos padrôes. É mostrado a seguir:

    <group name="AMX">
        <acl name="AMX" />
        <object name="resource.amx" />
    </group>

    <acl name="AMX">
        <right name="general.ModifyOtherObjects" access="true" />
        <right name="function.startResource" access="true" />
        <right name="function.stopResource" access="true" />
        <right name="general.adminpanel" access="false" />
        ...etc etc...
        <right name="command.kick" access="false" />
        <right name="command.freeze" access="false" />
        <right name="command.mute" access="false" />
        ...etc etc...
    </angcl>

Modificando a ACL

Há três maneiras de alterar a ACL, como você irá fazer isso depende de quem você é.

HTTP Interface

Você pode usar o webadmin http interface para modificar a ACL no seu navegador. Esta é a maneira mais fácil de modificar-lo. Apenas certifique-se de que o servidor está executando recursos webadmin e visite http://ServerIP:HttpPort/. Em seguida, você pode acessar as duas seções - ACLs e Grupos. ACLs permite que você crie suas listas de controle de acesso - listas de direitos. Grupos permitem agrupar grupos de usuários e atribuir-lhes a lista ACL. Por exemplo, a seção de ACLs permite que você especifique que a ACL Admin tem acesso ao início de comando do console. Então você pode ir para a seção de Grupos e criar um grupo de administração, tendo acesso à sua lista ACL Admin.

Arquivo XML

Você pode modificar o arquivo ACL.xml manualmente. Isto tem uma sintaxe bastante simples, mas pode ficar um pouco confuso às vezes. Se você editá-lo quando o servidor estiver em execução, não se esqueça de chamar a função de script aclReload ("start runcode", "run aclReload()"), para a nova ACL carregar as alterações. Isto também irá evitar a substituições acidentais no servidor.

Funções de Scripting