ES/ACL

From Multi Theft Auto: Wiki
Revision as of 19:47, 7 April 2014 by Rockeromx (talk | contribs)
Jump to navigation Jump to search

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

Ahora, desplácese al final de el ACL y verá la lista <acl name="Default" />. Tenga en cuenta que he recortado drásticamente esta lista debido a su longitud.

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


  • Entradas de funcion son funciones de scripting de MTA. Por ejemplo, si un recurso necesita utilizar restartResource y fue se encuentra en el grupo 'Everyone' (con la lista 'Default'), se le negaría el acceso a restartResource y no funcionar correctamente.
  • Comandos se crean cuando un recurso utiliza addCommandHandler. Un ejemplo sería escribiendo / createvehicle [vehículo] en la ventana de chat para el recurso Freeroam. Esto si los usuarios del grupo utilizando este ACL pueden utilizar el comando. Nota: los comandos no tienen ningún efecto sobre los recursos dentro del grupo. Los comandos sólo están relacionados con los usuarios.
    • General es un grupo con derechos modificados creado por el recurso de administración pero trabaja en los mismos principios. El script funciona con ellos mediante el uso de hasObjectPermissionTo

<br\>

Te darás cuenta que algunos grupos, como admin tienen múltiples nodos de <acl name="" /> . Un ejemplo es el grupo de administracion o 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>

<br\>

Esto le da a todos los permisos definidos en cada nodo <acl name="" /> por orden de lista. Así, por ejemplo, el grupo de administración asegura que todos los permisos se otorgan a los administradores mediante el uso de toda la lista. Si hay algún conflicto, la entrada más baja gana. Por ejemplo, pretenda que estos 2 ACL estaban en un grupo en el siguiente orden: <br\> 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. Para todos los usuarios y recursos en el grupo administrador "Admin": <right name="general.ModifyOtherObjects" access="true" /><br\> <br\>

Grupos de recursos y ACLs

Usted se dará cuenta que hay algunos otros grupos que vienen con MTA. Estos fueron definidos por los recursos que vienen con MTA. Si un recurso quiere designar algunos derechos de ACL específicos no previstos por los grupos de MTA por defecto, puede crear su propio nombre y grupo en la ACL para usarlo. Voy a mostrar la entrada de AMX como ejemplo. AMX está diseñado para emular scripts de SA-MP y necesita un cierto conjunto de permisos que no se ajusta bien a los grupos predeterminados. Este se muestra a continuación:

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

Modificación de la ACL

Hay tres formas de modificar la ACL - La forma de hacerlo depende de quién eres.

Interfaz HTTP

Usted puede utilizar la interfaz http webadmin para modificar la ACL en su navegador web. Esta es por lejos la forma más fácil de hacerlo. Sólo asegúrese de que el recurso webadmin se encuentra iniciado en el servidor y visite http://ServerIP:HttpPort/. Usted puede utilizar las dos secciones - ACL y Grupos o "Group". ACL le permite crear sus listas de control de acceso - listas de derechos. Grupos o "Group" les permiten agrupar colecciones de usuarios y asignar las ACLs para ellos. Por ejemplo, la seccion ACLs le permite especificar que la ACL de administración o "Admin" tiene acceso a el comando start en la consola. Usted puede ir a la sección de Grupos y crear un Group de administración que tiene acceso a la administración de su acl. Entonces usted podrá añadir usuarios a su Group de Administración.

Archivo XML

Usted puede modificar el archivo ACL.xml manualmente. Este tiene una sintaxis bastante sencilla, pero puede ser un poco confuso a veces. Si lo hace mientras el servidor está en ejecución, no se olvide de llamar a la función aclReload ("start runcode", "run aclReload()") así el nuevo ACL será cargado, o de lo contrario detener el servidor antes de realizar las modificaciones. Esto también evita que los cambios sean sobrescritos accidentalmente por el servidor.

Funciones de Scripting

Usted puede utilizar un gran número de funciones de script de ACL para modificar la ACL en la marcha. Por supuesto, usted puede (y de verdad Debe!) limitar el acceso a las funciones de ACL con la ACL. Tenga en cuenta que el admin resource que viene con MTA se puede utilizar para administrar la ACL en la ficha recursos. Usted debe ser configurado como administrador para utilizar el panel de administración. Haga clic aquí para obtener instrucciones de configuración de administración.

Vea también


Traductores

  • Rockero