ES/ACL: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
Line 35: Line 35:
</syntaxhighlight>
</syntaxhighlight>
<br \>
<br \>
You will first notice the acl name inside the group. It defines what permissions the group has. Users and resources in this group will have the permissions specified on the "Default" acl name list. ''Note: You will notice this group is special, in that it includes every user and resource by using a '''wildcard (*)''' where the user or resource name would be.''


Lo primero que deberías notar es el nombre ''ACL'' (''acl name'') asignado dentro del grupo. Esto define que permisos tiene el grupo en cuestión, usuarios y recursos en este grupo pueden acceder a los permisos especificados dentro de la lista ''ACL'' llamada "Default".
Lo primero que deberías notar es el nombre ''ACL'' (''acl name'') asignado dentro del grupo. Esto define que permisos tiene el grupo en cuestión, usuarios y recursos en este grupo pueden acceder a los permisos especificados dentro de la lista ''ACL'' llamada "Default".

Revision as of 19:43, 9 February 2014

Multi Theft Auto incluye una completa y útil Lista de Control de Acceso (ACL) la que te permite asegurar y limitar el acceso a distintas funciones, recursos del servidor de múltiples maneras.

El concepto en Multi Theft Auto de ACL es el de dar a un objeto especifico una serie de derechos. En el caso de Multi Theft Auto, los objetos son una de dos cosas - recursos o usuarios. Hay numerosos derechos disponibles en Multi Theft Auto - estos están enfocados principalmente en las funciones del lado del servidor.

Lo que esto significa, esencialmente es que el ACL te permite escoger con exactitud a que funciones (un recurso o un usuario) pueden acceder. Esto, por ejemplo, puede prevenir que los jugadores de tu servidor sean capaces de banearse mutuamente o prevenir que errores en recursos aun no probados causen daños y problemas en tu servidor.

Por supuesto un gran poder conlleva una gran responsabilidad y es muy sencillo causar graves problemas con los recursos, por ejemplo, deshabilitar la función spawnPlayer para cada recurso causaría que los jugadores ya no puedan spawnear. Por supuesto, existen situaciones en las que se busca hacer esto. (Si deseas hacer que un solo recurso se encargue de spawnear a los jugadores, por ejemplo.)

Entiendido el funcionamiento

Existen dos grandes componentes en el ACL: grupos y listas ACL. Estos aparecen como <group name=""> y <acl name="" />. Cuyo propósito es:
1. Garantizar a los usuarios el permiso de controlar el servidor y utilizar comandos. Ejemplos:

  • Permitir solo a los administradores utilizar la función giveWeapon en freeroam.
  • Permitir a todos los jugadores iniciar un recurso.

2. Garantizar a los recursos el permiso de utilizar una función o funciones de otros recursos. Ejemplos:

  • Permitir a un recurso utilizar la funcion restartResource.
  • Permitir a un recurso llamar funciones exportadas desde otro recurso.

Grupos por defecto

Multi Theft Auto trae por defecto algunos grupos con ciertos permisos. Estos son:

  • Everyone - Toda cuenta registrada, por defecto, es añadida a este grupo.
  • Moderator
  • SuperModerator
  • Admin
  • Console - Este grupo controla los permisos del usuario de la Consola <object name="user.Console" />
  • RPC - Procedimientos Remotos (En ingles, Remote Procedure Call). Garantiza el acceso a callRemote, para mas información revisa la información de la función.


A modo de ejemplo, utilizare el grupo Everyone. Por defecto, este luce así:

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


Lo primero que deberías notar es el nombre ACL (acl name) asignado dentro del grupo. Esto define que permisos tiene el grupo en cuestión, usuarios y recursos en este grupo pueden acceder a los permisos especificados dentro de la lista ACL llamada "Default". *Nota: Como notaras, este grupo en especial incluye a todos los usuarios y recursos gracias al uso del *.

Now, scroll further down the ACL and you will see the <acl name="Default" /> listing. Note I have trimmed this list dramatically due to its length.

    <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>


  • Function entries are MTA scripting functions. For example, if a resource needed to use restartResource and was only in the 'Everyone' group (with the 'Default' list), it would be denied access to restartResource and fail to work correctly.
  • Commands are created when a resource uses addCommandHandler. An example would be typing /createvehicle [vehicle] in the chatbox for the freeroam resource. This controls whether users in the group using this ACL can use the command. Note: commands have no effect on resources within the group. Commands are only related to users.
    • General is a custom right name group created by the admin resource but it works on the same principles. The script works with them by using hasObjectPermissionTo


You will notice some groups such as admin have multiple <acl name="" /> nodes. An example is the admin group:

    <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>

This gives all the permissions defined in each <acl name="" /> node in order of listing. So for example, the admin group makes sure all the permissions are given to admins by using all the lists. If there are any conflicts, the lowest entry wins. For example, pretend these 2 acls were in a group in the following order:

1. <acl name="Default"> sets <right name="general.ModifyOtherObjects" access="false" /> <br\> 2. <acl name="Admin"> sets <right name="general.ModifyOtherObjects" access="true" /> <br\> 3. For all users and resources in group admin: <right name="general.ModifyOtherObjects" access="true" /><br\> <br\>

Resource Groups and ACLs

You will notice there are some other groups that came with MTA. These were defined by resources that came with MTA. If a resource wants to designate specific ACL rights not provided by the default MTA groups, it can create its own ACL name and a group to use it. I will show AMX's entry as an example. AMX is designed to emulate SA-MP scripts and it needs a certain set of permissions that doesn't fit the default groups well. It is shown below:

    <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...
    </acl>

Modifying the ACL

There are three ways you can modify the ACL - how you do it depends who you are.

HTTP Interface

You can use the webadmin http interface to modify the ACL in your web browser. This is by far the easiest way to do so. Just make sure the webadmin resource is started on your server and visit http://ServerIP:HttpPort/. You can then use the two sections - ACLs and Groups. ACLs allows you to create your Access Control Lists - lists of rights. Groups allow you to group together collections of users and assign ACLs to them. For example, the ACLs section allows you to specify that the Admin ACL has access to the start console command. You can the go to the Groups section and create an Admin group that has access to your Admin acl. You can then add users to your Admin group.

XML file

You can modify the ACL.xml file manually. This has a fairly straightforward syntax, but it can get a bit confusing at times. If you do it while the server is running, don't forget to call the scripting function aclReload ("start runcode", "run aclReload()") so the new ACL is loaded, or otherwise stop your server before modifying. This also prevents your changes from being accidentally overwritten by the server.

Scripting functions

You can use a large number of ACL scripting functions to modify the ACL on the fly. Of course, you can (and really should!) limit access to the ACL functions with the ACL. Note that the admin resource that comes with MTA can be used to manage the ACL from the resources tab. You must be setup as admin to use the admin panel. Click here for admin setup instructions.

See Also