221 votos

¿Cuál es la mejor forma de manejar los permisos para apache2 del usuario www-data /var/www?

Alguien tiene una buena solución para el manejo de archivos en /var/www?
Nos estamos quedando Hosts Virtuales Basados en Nombre y apache2 usuario www-data.

Tenemos dos usuarios regulares y de root. Así que cuando de jugar con los archivos en /var/www ,en lugar de tener que...

chown -R www-data:www-data  

...todo el tiempo, lo que es una buena manera de manejar esto?

Pregunta complementaria. Cómo hardcore hacer usted, a continuación, ir en los permisos?

Este ha sido siempre un problema en colaboración entornos de desarrollo.

210voto

Tom Puntos 1727

Tratando de ampliar @Zoredache la respuesta, como puedo dar a este un ir yo mismo:

  • Crear un nuevo grupo (www-pub) y agregar los usuarios a ese grupo

    groupadd www-pub

    usermod -a -G www-pub usera ## debe usar un anexar a los grupos existentes

    usermod -a -G www-pub userb

    groups usera ## grupos de visualización para el usuario

  • Cambiar la propiedad de todo bajo /var/www / root:www-pub

    chown -R root:www-pub /var/www ## -R recursivo

  • Cambiar los permisos de todas las carpetas a 2775

    chmod 2775 /var/www ## 2=id grupo, 7=rwx para el propietario (root), 7=rwx para el grupo (www-pub), 5=rx para el mundo (incluyendo apache www-datos de usuario)

    ID grupo (SETGID) poco (2) hace que el grupo (www-pub) que se copian a todos los nuevos archivos/carpetas creadas en esa carpeta. Otras opciones son SETUID (4) copiar el id de usuario y PEGAJOSA (1) que creo que permite que sólo el propietario de eliminar archivos.

    Hay un -R recursiva opción, pero que no discrimina entre los archivos y carpetas, así que usted tiene que utilizar la función de búsqueda, así:

    find /var/www -type d -exec chmod 2775 {} +

  • Cambiar todos los archivos a 0664

    find /var/www -type f -exec chmod 0664 {} +

  • Cambiar el umask para que los usuarios 0002

    El umask controla el archivo por defecto los permisos de creación, 0002 quiere decir que los archivos se han 664 y directorios 775. La configuración de este (por la edición de la umask de la línea en la parte inferior de la /etc/profile en mi caso) los archivos creados por un usuario va a escribir por otros usuarios de la www-grupo sin necesidad de chmod de ellos.

Prueba de todo esto mediante la creación de un archivo y directorio y la comprobación de que el propietario, grupo y permisos de con ls -l.

Nota: Usted tendrá que cerrar/en busca de cambios a los grupos para tomar efecto!!!!

62voto

Zoredache Puntos 84524

No estoy del todo de cómo desea que los permisos, pero esto puede dar un punto de partida. Probablemente hay mejores maneras. Estoy asumiendo que usted desea que los usuarios puedan cambiar nada en /var/www/

  • Crear un nuevo grupo (www-pub) y agregar los usuarios a ese grupo.
  • Cambiar la propiedad de todo bajo /var/www / root:www-pub.
  • Cambiar los permisos de todas las carpetas a 2775
  • Cambiar todos los archivos a 0664.
  • Cambiar el umask para que los usuarios 0002

Esto significa que cualquier archivo nuevo creado por cualquiera de sus usuarios debe ser el nombre de usuario:www-pub 0664 y el directorio que se crea será el nombre de usuario:www-pub 2775. Apache obtener acceso de lectura a todo a través de la 'de otros usuarios de componente. El bit SETGID en los directorios de la fuerza de todos los archivos que están siendo creados para ser poseído por el grupo propietario de la carpeta. Ajuste de la umask es necesario para asegurarse de que la escritura está establecido el bit de modo que cualquier persona en el grupo será capaz de editar los archivos.

En cuanto a hardcore me voy de permisos. Esto depende completamente del sitio/servidor. Si sólo hay 1-2 editores y necesito que no se rompan las cosas demasiado mal, a continuación, voy a ir fácil. Si el negocio requiere de algo más complejo, entonces yo le pondría algo más complejo.

2voto

jeffm Puntos 2179

Creo que es posible encontrar POSIX ACL (listas de control de acceso) para ser útil. Permiten un modelo fino de permisos en comparación con el usuario:grupo:otro modelo. He encontrado que será más fácil mantener la espalda recta en mi cabeza desde que puedo ser más explícito y también pueden establecer el "default" de la conducta de una rama del sistema de archivos.

Por ejemplo, puede especificar los permisos de cada usuario de forma explícita:

setfacl -Rm d:u:userA:rwX,u:userA:rwX /var/www
setfacl -Rm d:u:userB:rwX,u:userB:rwX /var/www

O usted puede hacer sobre la base de algún grupo compartido:

setfacl -Rm d:g:groupA:rwX,u:groupA:rwX /var/www

Y tal vez usted quiere mantener a su usuario de Apache como de sólo lectura

setfacl -Rm d:u:www-data:rX,u:www-data:rX /var/www

Las páginas Man:

Tutorial

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: