====== Access Controls (Control de Acceso) ====== ===== Configuración ===== Para habilitar ACL en Dokuwiki, necesitas al menos un ACL por defecto. Simplemente copia los archivos de ejemplo ''conf/acl.auth.php.dist'' y ''conf/users.auth.php.dist'' a ''conf/acl.auth.php'' y ''conf/users.auth.php'' respectivamente y la página de acceso debería funcionar. Si recibes un mensaje "No ACL setup yet! Denying access to everyone." asegúrate de que el texto en el principio del fichero acl.auth.php lee de acl.auth.php y no de users.auth.php. También necesitas [[es:config|configurar]] algunas opciones. Échale un vistazo a un ejemplo que podrás añadir a tu ''local.php'' para habilitar el método de autentificación texto plano con el registro público: $conf['useacl'] = 1; // activa la característica ACL $conf['superuser'] = '@admin'; // el grupo admin es el superusuario [[config:useacl]] habilita la caractererística ACL. Una vez esta característica está activada, en la parte inferior de cada página aparece un botón para identificarse, y los usuarios podrán identificarse. La opción [[config:superuser]] especifica quien es capaz de hacer cualquier cosa DokuWiki (incluido añadir restricciones ACL) - esto puede ser realizado sobre un usuario o sobre un grupo (marcado con ''@''). Cuando instalas un dokuwiki con ACL desde el principio, utilizando el navegador, haz clic sobre el botón "Login", sigue el enlace "register", y registra almenos a un usuario. (Si no ves el enlace para registrarse, es porque los permisos de conf/users.auth.php o conf/acl.auth.php son incorrectos o no puedes escribir sobre estos archivos.) Después, edita ''conf/users.auth.php'' y cambia el grupo de un usuario de "user" a "admin". Desde ahora los usuarios del grupo "admin" tendrán un botón adicional "Admin". En este punto, una característica adicional puede ser activada. Para evitar que los usuarios puedan registrarse ellos mismos, debes añadir 'register' a las opciones disableactions: $conf['disableactions'] = 'register'; // ya no se permite a los usuarios registrarse por si mismos La antigua forma de hacer esto era la opción [[config:openregister|openregister]] option la cual ya no se utiliza. Si todo ha ido bien, los usuarios sólo podrán ser añadidos por un usuario del grupo admin (bien desde la interfaz web o editando directamente el archivo ''conf/users.auth.php''). Hay algunas opciones de configuración adicionales que permiten el control de otros aspectos de ACL pero con utilizar los valores por defecto de momento nos vale. $conf['autopasswd'] = 1; //genera automáticamente contraseñas y las envia al usuario por mail $conf['passcrypt'] = 'smd5'; //Método de encriptación utilizado (smd5,md5,sha1,ssha,crypt,mysql,my411) $conf['defaultgroup']= 'user'; //Grupo por defecto donde los usuarios son añadidos $conf['profileconfirm'] = '1'; //Requiere la contraseña actual para confirmar los cambios de un perfil de usuario $conf['authtype'] = 'plain'; // plaintext backend (por defecto) * Cambia [[config:autopasswd]] a 0 para permitir a los usuarios seleccionar su propia contraseña cuando se registren. Esto tiene el efecto de que no se garantiza que los usuarios se hayan registrado con una dirección de mail válida. * [[config:passcrypt]] determina el método de encriptación utilizado para almacenar contraseñas. * [[config:defaultgroup]] está claro: todos los nuevos usuarios serán añadidos a este grupo por defecto. * Establece [[config:profileconfirm]] a 0 para permitir a un usuario modificar su perfil (nombre completo, contraseña y dirección de correo electrónico) sin tener que confirmar su contraseña actual. * DokuWiki puede utilizar diferentes formas de acceso a los usuarios. Por defecto se utiliza un sistema propio:[[auth:plain|plaintext]]. El sistema utilizado es elegido estableciendo la opción [[config:authtype]]. Échale un vistazo a la página [[:auth]] para ver que opciones están disponibles. ... ===== Gestión de usuarios ===== Los usuarios pueden ser creados, eliminados y modificados a través de [[plugin:usermanager]]. Para ver información de como añadir usuarios manualmente vea las descripciones en la documentación del [[.auth:plain|sistema de autenticación]]. Por defecto los usuarios se pueden registrar ellos mismos Vea también: [[faq:regdisable|FAQ: Cómo evitar el registro de usuarios]] ===== Restricciones de acceso ===== Las restricciones de acceso pueden ser sobre [[pagename|páginas]] y [[namespaces]]. Hay cinco tipos de permiso: //lectura//, //modificación//, //creación//, //subir ficheros// y //borrado//. Cada nivel de permiso contiene a los anteriores, empezando desde el permiso de lectura y terminando por el de borrado. Por supuesto, los permisos de creación, subir ficheros y borrado sólo pueden ser establecidos a namespaces. Cuando DokuWiki comprueba que derechos debe dar a un usuario, utiliza todas las reglas existentes para emparejar el nombre de usuario o bien el nombre del grupo al que pertenece el usuario. La regla que le proporciona el permiso más alto es la que se utiliza finalmente. Los permisos se comprueban para la prímera página, después todos los namespaces son comprobados hasta que se encuentra una regla adecuada. Para añadir una regla de restricción, visite la página sobre la que desea restringir su acceso y acceda a la interfaz de administración pulsando el botón ''Admin'' (sólo disponible para los [[config:superusuarios]]). Una vez dentro, seleccione //Access Control List Management//. Se le mostrará una tabla como la siguiente, mostrando todas las restricciones relevantes a dicha página. {{wiki:acladmin.png|Example of an ACL-Restriction}} Las restricciones son añadidas en la parte superior de la tabla. Necesitas seleccionar el ámbito, que puede ser la propia página, o cualquier namespace ((el namespace más utilizado es ''*'')). También necesitas elegir a quien quieres dar acceso o denegárselo; esto puede ser un grupo o un usuario. Y finalmente, necesitas seleccionar los permisos que deseas. Seleccionando none bloqueas el acceso a la página o al namespace a un determinado usuario o grupo. Nota: Los permisos de borrado afecta sólo a los ficheros subidos. Las páginas pueden ser eliminadas (y reestablecidas) con al menos permisos de edición. Quien tenga permisos para subir ficheros pero no de borrado, no podrá sobreescribir estos ficheros === Grupos especiales === **ALL**. Cualquiera, incluso usuarios no regristados, son miembros del grupo ALL. Puedes usar este grupo para restringir el acceso a todos los usuarios (por defecto) y después relajar los permisos para determinados usuarios. Por ejemplo, en el pantallazo anterior, nadie puede subir archivos, excepto los miembros del grupo ''upload''. **user**. Todos los usuarios por defecto pertenecen por defecto al grupo 'user'. Utilice esto para dar permisos a todos los usuarios registrados. El nombre de este grupo se puede configurar a través de la opción [[config:defaultgroup]]. El grupo "user" es un grupo real al que todos los nuevos usuarios son añadidos por defecto cuando se utiliza al sistema de autenticación de texto plano. Si utilizar otro sistema de autenticación, necesitas utilizar los grupos utilizados por este sistema. ===== Información adicional ===== Las restricciones de acceso se almacena en un fichero llamado ''conf/acl.auth.php'', que debe tener permisos de escritura por el servidor web si se desea poder utilizar la interfaz web de administración ACL :!: No es recomendable editar este fichero manualmente. Utilice en su lugar la interfaz web de administración. Las líneas vacias y los comentario tipo shell son ignorados. Cada línea contiene 3 campos separados por espacios en blanco: * El recurso a restringir. Esto puede user un [[pagename|nombre de página]] o un [[namespace|espacio de nombres]]. Los espacios de nombres se marcan con un asterisco adicional (observa los ejemplos de abajo) * Un grupo o un nombre de usuario. Los nombres de grupos se marcan con ''@'' al inicio del nombre. * Un nivel de permiso (observa abajo) Hay 7 niveles de permisos representados por un entero. Los niveles más alto incluyen los más bajos. Si puedes editar, también puedes leer. Quizás el nivel de permiso de //administrador// representado por el valor //255// no será nunca utilizado en el fichero ''conf/acl.auth.php''. Sólo se utiliza internamente para emparejar la opción de [[config:superuser|superusuario]]. ^ Nombre ^ Nivel ^ aplicado a ^ Permisos ^ Constante DokuWiki ^ | none | 0 | páginas, espacios de nombres | sin permisos -- bloqueo absoluto | AUTH_NONE | | read | 1 | páginas, espacios de nombres | permisos de lectura | AUTH_READ | | edit | 2 | páginas, espacios de nombres | páginas existentes pueden ser editadas | AUTH_EDIT | | create | 4 | espacios de nombres | puede crear nuevas páginas | AUTH_CREATE | | upload | 8 | espacios de nombres | puede subir archivos | AUTH_UPLOAD | | delete | 16 | espacios de nombres | archivos pueden ser modificados o eliminados| AUTH_DELETE | | admin | 255 | plugins de administración| superusuario((ver [[config:superuser]])) puede cambiar los parámetro de configuración| AUTH_ADMIN | Aquí hay un ejemplo: * @ALL 4 * bigboss 16 start @ALL 1 marketing:* @marketing 8 devel:* @ALL 0 devel:* @devel 8 devel:* bigboss 16 devel:funstuff bigboss 0 devel:* @marketing 1 devel:marketing @marketing 2 Vamos a echarle un vistazo línea a línea: - Esto establece permisos para el espacio de nombres principal. Permite a cualquiera editar y crear páginas. Quizás subir archivos no esté permitido. - Al usuario //bigboss// se le dan plenos derechos - La página start sólo puede ser leída por cualquiera - Establecemos los permisos del espacio de nombres ''marketing''. Se permite a todos los miembros del grupo //marketing// subir archivos - el resto de usuarios se emparejarán con la lína 1, con lo que éstos todavía podrán crear y editar. //bigboss// hereda sus derechos de la línea 2, con lo que él puede subir y eliminar ficheros. - Restringimos el acceso para el espacio de nombres ''devel''. Nadie puede hacer nada. - En realidad no es realmente nadie -- le damos plenos derechos a los miembros del grupo //devel// - Y por supuesto //bigboss// sigue teniendo sus derechos, -- es el único que puede eliminar archivos subidos - Quizás los miembros del grupo devel no quieren que su jefe pueda ver la página ''funstuff'' -- recuerda que nombres de página exactos sobreescriben los permisos a los espacios de nombres - Y el equipo de //marketing// puede leer cualquier cosa en el espacio de nombres ''devel'' - Y por último, los miembros del grupo //marketing// pueden editar la página ''devel:marketing''. Por favor, recuerda que el **orden de las instrucciones en el fichero no importa**. El fichero es analizado por completo, buscando la combinación perfecta del usuario y la página visitada. Si se encuentra una pareja más adelante, se aborta el emparejamiento. Si no se encuentra nada, se comprueba los permisos del grupo para la página actual. Si sigue sin encontrarse nada, se continúa el chequeo en el siguiente espacio de nombres. Puedes ver en el ejemplo anterior los permisos para el usuario //bigboss//. Se le dan plenos derechos en la línea 2, pero necesita conseguir los accesos totales para el espacio de nombres devel:* en la línea 7. Si no estuviera esta línea, el primer emparejamiento para el usuario //bigboss// para una página dentro del espacio de nombres devel sería la línea 5, ya que //bigboss// es miembro del grupo mágico //ALL//. Nota: Para configurar los usuarios y grupos con caracteres especiales (como caracteres en blanco), necesitas codificarlos. Esto sólo se aplica a los caracteres especiales por debajo del rango de 128 bytes. El fichero de configuración ACL utiliza la codificación UTF-8 con lo que pueden ser escritos caracteres multibyte. Esto sólo se aplica cuando el sistema de autenticación es diferente del [[.auth:plain|texto plano]] -- el sistema de autenticación de texto plano no permite ningún tipo de carácter especial.