Autor Tema: Usuario www-data en PHP, Problemas de permisos en Ubuntu apache /var/www  (Leído 12544 veces)

gatoher

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 86
    • Ver Perfil
   Hola a todos tengo un problema a la hora de crear directorios desde un script de PHP, estoy usando Ubuntu como servidor y como usuario PHP es www-data y grupo www-data.
Esto lo se por que lo he mirado con:
Código: [Seleccionar]
        $user = getenv('APACHE_RUN_USER');
        $group = getenv('APACHE_RUN_GROUP');
        echo exec('whoami');

   Una solución es crear un directorio dentro del proyecto con permisos 777, pero no me parece nada elegante. Que tendría que hacer, dar permisos de escritura en /var/www al usuario y grupo www-data, o ejecutar PHP con un usuario de permisos de escritura en /var/www.
« Última modificación: 03 de Abril 2016, 11:17 por César Krall »

Mastermind

  • Experto
  • *****
  • Mensajes: 536
    • Ver Perfil
Re:Usuario en PHP, Problemas de permisos
« Respuesta #1 en: 31 de Marzo 2016, 13:14 »
Hola yo creo que www-data es el usuario Apache y este usuario sólo debería tener acceso de lectura. Creo que deberías establecer permisos 775 para que el propietario (root) y el propietario de grupo (admin) tengan accesos a los directorios sobre los que quieras operar, mientras que el resto de usuarios incluido www-data sólo tendrán permiso de lectura.

gatoher

  • Principiante
  • **
  • APR2.COM
  • Mensajes: 86
    • Ver Perfil
Re:Usuario en PHP, Problemas de permisos
« Respuesta #2 en: 31 de Marzo 2016, 19:10 »
   Hola Mastermind, gracias por responder.
   A ver, si tienes razón el usuario es de Apache, eso esta claro. Pero si un script de PHP tiene que crear, modificar archivos en el directorio web, osea un ejemplo:
   /var/www/html/site.com. Ese directorio es de root, por eso no puede escribir en él.
   Además también hago modificaciones con mi usuario, que no es root. Yo root lo gasto para poco.
   He visto esta solución:


       1- sudo usermod -a -G developer user1 (agregar cada usuario al grupo de desarrolladores)
       2-sudo chgrp -R developer /var/www/site.com/ para que los desarrolladores puedan trabajar allí
      3- sudo chmod -R 2774 /var/www/site.com/ por lo que sólo los desarrolladores pueden crear/editar archivos (otro/mundo puede Lee)
     4-sudo chgrp -R www-data /var/www/site.com/uploads para que pueda crear www-data (apache/nginx) ficheros.

     Osea, por lo que yo entiendo es, 'por que no lo entiendo todo':
    1-Crear un grupo de desarrollo y agregar ahí mi usuario no root.
    2-Poner como propietario del directorio al grupo de desarrollo.
    3-Poner permisos de escritura,lectura ejecución al usuario y grupo propietario y sólo lectura a otros.(aqui tego la duda de porque hay un 2 delante del 774 si es octal,¿no debería haber un 0, osea 0774)
    4- Crea dentro de /var/www/site.com un directorio 'uploads' para que el usuario de apache pueda crear archivos.

   Esta solución parece más elegante. Alguna opinión

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".