Lista de Controle de Acesso: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Created page with "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 ...")
 
No edit summary
Line 7: Line 7:
É 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.
É 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 o ACL==
==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: <br>'''1.''' Conceder permissão para usuários para controlar o servidor e usar comandos de recursos. Exemplos:<br/>
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: <br>'''1.''' Conceder permissão para usuários para controlar o servidor e usar comandos de recursos. Exemplos:<br/>
*Permitindo que os administradores usem apenas a função giveweapon do freeroam.
*Permitindo que os administradores usem apenas a função giveweapon do freeroam.
Line 94: Line 94:
         <right name="command.mute" access="false" />
         <right name="command.mute" access="false" />
         ...etc etc...
         ...etc etc...
     </acl>
     </angcl>
</syntaxhighlight>
</syntaxhighlight>
==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 [[Resource/webadmin|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 ''<nowiki>http://ServerIP:HttpPort/</nowiki>''. 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===

Revision as of 20:00, 11 January 2013

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