*
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 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
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 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 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)
…
Los usuarios pueden ser creados, eliminados y modificados a través de usermanager. Para ver información de como añadir usuarios manualmente vea las descripciones en la documentación del sistema de autenticación. Por defecto los usuarios se pueden registrar ellos mismos
Vea también: FAQ: Cómo evitar el registro de usuarios
Las restricciones de acceso pueden ser sobre 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 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.
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 1). 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
ALL. Cualquiera, incluso usuarios no registrados, 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 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 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.
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:
@
al inicio del nombre.
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 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 | superusuario2) 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:
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.devel
. Nadie puede hacer nada.funstuff
– recuerda que nombres de página exactos sobreescriben los permisos a los espacios de nombresdevel
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 texto plano – el sistema de autenticación de texto plano no permite ningún tipo de carácter especial.