Ver Mensaje Individual
  #4 (permalink)  
Antiguo 30/08/2011, 08:41
Avatar de vgonga1986
vgonga1986
 
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 1 mes
Puntos: 253
Respuesta: Duda sobre los permisos en archivos

Creo que tienes que redirigir la idea que tienes sobre un sistema de usuarios en una aplicación web.

De nuevo te veo perdido, GRANT es únicamente para asignar permisos a los usuarios de una base de datos, que no se van a corresponder con los usuarios de tu aplicación web. Luego tampoco te vale para lo que quieres conseguir. Con grant puedes dar a los usuarios permiso para hacer consultas SELECT, insertar datos con INSERT, actualizar con UPDATE, crear objetos (PRODECURE, TABLE, FUNCTION...) y más operaciones de este tipo, pero son permisos sobre la base de datos, es decir tratan operaciones que un usuario podrá realizar contra una base de datos, no contra su contenido. Normalmente, una aplicación web tiene un único usuario de la base de datos, que es el que utiliza para realizar todas estas operaciones (las que necesite, no siempre son todas). Pero esto es transparente al usuario.

Lo que tú buscas, por el ejemplo que me pones de descargar fotos de usuarios que no sean amigos, es restringir las acciones sobre el contenido de los usuarios de tu aplicación web. Esto es mucho más concreto que los permisos Unix de ficheros o los permisos (con GRANT) de la base de datos. No es algo que tengas que controlar con las herramientas que tienes en servidor y base de datos respectivamente, sino que tienes que crear tú la lógica para ello, con programación PHP.

Cómo lo hagas es cosa tuya, hay miles de formas, pueden ser más o menos complejas, má so menos completas, más o menos generales... Como tú quieras, porque lo decides tú. Si lo quieres hacer bien, seguramente tendrás que mirar algún manual o algún sistema de gestión de usuarios que ya exista y copiar un poco la idea, adaptándola a tu aplicación. Si no necesitas tanta seguridad, muchas veces vale con añadir un par de conceptos a tu lista de usuarios. Todo depende de lo que necesites.

Básicamente, lo que tendrás que hacer será plantear qué sistema de usuarios quieres tener y añadirlo a la funcionalidad de tu base de datos. Por ejemplo, una forma muy utilizada es la de hacer grupos de usuarios (Alias, Círculos... como quieras llamarlo) y asignar los permisos a los grupos en vez de a los usuarios directamente. Luego cada usuario lo mandas al grupo que le corresponda. Esto en la base de datos se debe reflejar con un par de tablas:
- Usuario: con todos los datos necesarios de usuarios.
- Permiso: una lista de todos los permisos que existen, se entiende por permiso una acción que podrá o no realizar un usuario. Por ejemplo, "subir ficheros", "descargar contenidos", "añadir comentarios", "añadir artículos"...
- Grupo: una lista de todos los grupos de usuarios, los que tú quieras. Por ejemplo: Administradores de página, Administradores de artículos, Usuarios, Moderadores...
- GrupoPermiso: sería una tabla cruzada que diga qué permiso de la tabla Permiso tiene cada grupo de la tabla Grupo.
- GrupoUsuario: igual que la anterior, pero relacionando los usuarios con los grupos a los que pertenece.

Con esta estructura en la base de datos y un buen control dentro de la aplicaicón con PHP puedes hacer practicamente cualquier cosa. Esto es lo más general que se me ha ocurrido, pero si no necesitas tanto, puedes empezar a simplificarlo.

Un saludo y espero que te sirva la explicación.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?