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 Apache2 y vsftp instalados.
Lo que está sucediendo es que estoy teniendo una batalla constante con quién posee los archivos y las carpetas y parece que no puedo hacerlo bien.
Este es mi entendimiento hasta ahora:
- El usuario de www-data necesita la propiedad de 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émoslo ftpuser ) 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 llamado ftpandwww y he incorporado todas las carpetas y archivos a este grupo. Esto ha funcionado hasta cierto punto ...
Estoy casi en el lugar correcto, excepto por el hecho de que las carpetas nuevas creadas con mi cliente FTP tienen los permisos incorrectos (que puedo corregir cambiándolos en el cliente FTP), pero luego www-data no puede escribirles porque son propiedad de ftpuser y termino teniendo que usar SSH y ejecutar un chown para ftpandwww group para que ambos estén contentos.
¿Cómo hago para que todas las carpetas nuevas que creo bajo FTP tengan los permisos correctos (774) y sean propiedad del grupo ftpandwww automáticamente para que pueda cargar y servir a través de la web (con permisos de escritura) sin tener que entrar y compartir todas las nuevas carpetas y archivos cada vez?
fuente
Respuestas:
Use los permisos SetGID en el directorio raíz web y propaguelos a los hijos.
Cuando aplique 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 de grupo predeterminada del usuario.
Para aplicar SetGID a un objeto del sistema de archivos, utilícelo
chmod
con un 2 delante del código de permiso.(por ejemplo: 740 => 2740).
Utilizo SetGID en muchos de mis recursos compartidos de Samba, de modo que los archivos siempre tienen el ownergroup
Users
y cualquier miembro del grupo puede leer los archivos (generalmente uso2750
para que solo el usuario propietario pueda escribir en el archivo).En su caso, ejecute algo como esto (reemplace XXX con sus permisos deseados):
Luego, nuevos archivos y carpetas saldrán 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 se le niega la escritura a uno u otro usuario, debido a un permiso de grupo incorrecto (pero la propiedad es correcta), entonces su mejor opción es establecer un UMASK personalizado para el usuario que crea los archivos .
Si tiene dificultades para configurar el UMASK para el usuario (porque es un demonio), verifique este hilo en las opciones para configurar el UMASK de un usuario del demonio .
Recomendaría la máscara
007
si desea que los miembros del grupo puedan escribir y eliminar archivos, y sin privilegios para los no propietarios.fuente