¿Cómo le doy a los archivos y directorios creados por FTP los permisos correctos para que Apache los lea y escriba?

¿Cómo le doy a los archivos y directorios creados por FTP los permisos correctos para que Apache los lea y escriba?

Soy más una persona de Windows, así que disculpe mi ignorancia con esta pregunta básica de Linux.

Estoy cuidando un servidor Linux (Debian) que solo tiene instalados Apache2 y vsftp.

Lo que sucede es que estoy teniendo una batalla constante sobre quién es el propietario de los archivos y carpetas y parece que no puedo hacerlo bien.

Este es mi entendimiento hasta ahora:

  • www-datosEl usuario necesita la propiedad de las carpetas y archivos, ya que todos los archivos en /var/www/html ejecutan scripts que requieren que escriban en su carpeta. Y, por supuesto, debe poder servir las páginas a través de http.
  • Mi usuario ftp (llamémosloftpuser) también requiere permiso para escribir en la carpeta /var/www/html (recursiva), ya que necesito poder cargar nuevos archivos.

Con esto en mente he creado un grupo llamadoftpandwwwy he cambiado todas las carpetas y archivos de este grupo. Esto ha funcionado hasta cierto punto...

Estoy casi en el lugar correcto, excepto por el hecho de que cualquier carpeta nueva creada usando mi cliente FTP tiene permisos incorrectos (que puedo corregir cambiándolos en el cliente FTP), pero luego www-data no puede escribir en ellas. porque son propiedad deftpusery termino teniendo que iniciar sesión mediante SSH y ejecutar un chown en el grupo ftpandwww para que ambos estén contentos.

¿Cómo hago para que todas las carpetas nuevas que creo en FTP tengan los permisos correctos (774) y sean propiedad automática deftpandwww¿Grupo al que puedo cargar y servir vía web (con permisos de escritura) sin tener que entrar y seleccionar todas las carpetas y archivos nuevos cada vez?

Respuesta1

UsarEstablecer GIDpermisos en el directorio raíz web y propagarlos a los niños.

Cuando aplica SetGID en un directorio, todos los elementos nuevos en ese directorio se crearán con el mismo grupo que tiene su padre, independientemente de la membresía del grupo predeterminado del usuario.

Para aplicar SetGID a un objeto del sistema de archivos, utilícelo chmodcon un 2 delante del código de permiso.
(por ejemplo: 740 => 2740).

Utilizo SetGID en muchos de mis recursos compartidos de Samba, para que los archivos siempre tengan el grupo propietario Usersy cualquier miembro del grupo pueda leer los archivos (normalmente lo uso 2750para que sólo el usuario propietario pueda escribir en el archivo).

En su caso, ejecute algo como esto (reemplace XXX con los permisos que desee):

sudo chown -R  root:ftpandwww /var/www
sudo chmod -R 2XXX /var/www 

Luego aparecerán nuevos archivos y carpetas con propiedad como ftpuser:ftpandwww.

Editar:

Dependiendo de su caso de uso, es probable que SetGID resuelva su problema, pero si tiene problemas continuos en los que a uno u otro usuario se le niega la escritura debido a un permiso de grupo incorrecto (pero la propiedad es correcta), entonces su mejor opción es configurar aUMASK personalizado para el usuario que crea los archivos.

Si tiene dificultades para configurar UMASK para el usuario (porque es un demonio), consulte este hilo sobre opciones paraconfigurar la UMASK de un usuario demonio.

Recomendaría la máscara 007si desea que los miembros del grupo puedan escribir y eliminar archivos, y no tener privilegios para los que no son propietarios.

información relacionada