Saltar al contenido

Permiso SFTP denegado en archivos propiedad de www-data

Este equipo de especialistas pasados ciertos días de investigación y de recopilar de información, obtuvieron la solución, esperamos que te resulte útil para tu proyecto.

Solución:

Ubuntu.com tiene guías de servidor bastante buenas, como la guía Apache. ¿De dónde sacaste los procedimientos que escribiste tan cuidadosamente? Nunca tuve que pasar por tantos problemas con ninguno de los servidores que configuré, aunque estoy abierto a la posibilidad de que no lo haya estado haciendo bien; además, en realidad no he instalado servidores para cualquier cosa que sea muy pública o muy grande, por lo que podría haber agujeros de seguridad que no conozco.

Sin embargo, nunca necesité ser miembro del grupo www-data, y ningún archivo fuente en www es propiedad de www-data. Según tengo entendido, Apache solo lo usa para sus propios archivos, y no tendrá permisos de escritura para ninguno de los otros archivos en sí, porque en teoría, ningún archivo importante permitirá que www-data tenga permiso de escritura. Supongo que los archivos propiedad de www-data darían permiso de solo lectura a todos los demás, y nadie debería tener permiso de escritura en sus archivos. Podría estar totalmente equivocado, por supuesto, y si lo estoy, espero que alguien me diga y me indique la documentación real que explica de manera diferente (no un foro donde un usuario de Internet aleatorio como yo ha producido instrucciones que funcionaron para él).

Tal vez me estoy perdiendo algo, pero su problema debería ser bastante sencillo. El usuario que ha iniciado sesión mediante sftp debe ser miembro del grupo www-data y los archivos que intenta modificar deben tener permisos de escritura para el grupo www-data. No tiene sentido para mí que pueda modificar los archivos usando ssh, pero no usando sftp; ¿estás seguro de que estás iniciando sesión en la misma cuenta para ambos? En sftp, puede ingresar comandos como !groups para enumerar sus grupos, o !whoami para comprobar qué nombre de inicio de sesión está utilizando. Los resultados deben coincidir con lo que ve usando ssh (con los mismos comandos menos el signo de exclamación).

También debería poder usar chmod, chown, chgrp desde sftp si tiene permiso para hacerlo.

Por cierto, creo que tu lista tiene al menos un comando bastante malo:

sudo chmod -R g+rw /var/www

Esto le da al mundo permiso de escritura para cada archivo y carpeta en /var/www. Esto suena como una mala idea. Normalmente, solo la raíz tiene permiso de escritura en estos directorios, a menos que algunos específicos necesiten más permisos, generalmente solo directorios individuales.

Nota: Esto fue un error de mi parte. Gracias a DonalLafferty por señalar esto, que especifica “g”, no “a”, por lo que solo cambia los permisos de grupo. Mis viejos ojos cansados ​​(o una mala fuente) deben haberlo leído como “a”.

Ediciones para aclaración

Normalmente, los archivos creados por Apache son de solo lectura tanto para el grupo www-data como para todos los demás usuarios, al igual que los archivos de propiedad raíz en /var/www. Por lo tanto, no debería haber ninguna razón para convertir a nadie en miembro de www-data. El problema es dar a todos acceso de escritura, que es un caso diferente. Esto debe hacerse haciendo que directorios específicos estén disponibles dentro de su sitio, y esto se hace simplemente usando chmod, ya sea con sudo, ya que probablemente sea propiedad de root, o haciendo que usted mismo sea el propietario y no use sudo.

Si tiene más desarrolladores que necesitan acceso a todo el sitio, es cuando desea crear un grupo de usuarios como “webmasters”, convertirlo en el propietario del sitio, otorgar permisos de escritura a ese grupo y hacer que todos los desarrolladores sean miembros. de ese grupo Entonces, la lista de los directorios del sitio sería algo como:

drwxrwxr-x  ##  webmasters     webmasters   #### ####-##-## ##:##  mysite.com

Más ediciones

Desde entonces, me di cuenta de que realmente no es necesario crear un usuario “webmasters”, solo un grupo. Entonces los archivos pueden ser propiedad de root:webmasters, es decir, root es el propietario, pero webmasters es el grupo.

En respuesta a las preguntas a continuación, los archivos que escribe Apache serán propiedad de www-data y agruparán www-data. Estos archivos normalmente no son algo en lo que escribe, por lo que los que no son miembros de www-data pueden tener acceso de solo lectura; creo que depende de los permisos del directorio. Si necesita más que un acceso de escritura ocasional, puede ser útil agregarse al grupo. Por lo general, hace que los directorios específicos se puedan escribir en todo el mundo para el contenido guardado por Apache. Considere también que la mayoría de los alojamientos web compartidos que ejecutan Apache sin acceso de shell ni siquiera tendrían una forma de configurar grupos.

Pero, Apache puede leer archivos incluso propiedad de root. Casi todos los archivos tienen acceso de lectura mundial, pero no de escritura. Entonces, a menos que desee cambiar esto, Apache no necesita estar en el grupo de webmasters.

Esta es toda la configuración básica de Linux, no realmente Apache. Apache solo se preocupa por el acceso desde el servidor web, y eso lo establecen los archivos de configuración. Por esta razón, el enlace de documentación de Ubuntu que incluí en mi publicación debe considerarse una mejor fuente que una wiki pública.

Por cierto, el Libro de recetas Apache de O’Reilly dice: “Los directorios de documentos, como htdocs, cgi-bin e íconos, deberán tener permisos establecidos de la manera que tenga más sentido para el modelo de desarrollo de su sitio web en particular, pero bajo ninguna circunstancia ninguno de estos directorios o archivos contenidos en ellos deben ser escribibles por el usuario del servidor web”.

Finalmente, el uso de ACL es una buena manera de establecer permisos de archivo si necesita más control. Incluso puede ser una buena manera de configurarlos todo el tiempo, y es algo que debería investigar.

Noté que no habías usado chown.

Para configurar correctamente la propiedad de los archivos/carpetas, puede configurar todo el directorio de esta manera:
chown -R www-data:www-data

Esto establece la propiedad en el grupo. www-data y usuario www-data

Además, puede hacer esto como una solución temporal:

chmod 777 /var/data/ o chmod 777 /var/data/

edite los archivos según sea necesario, luego

chmod 644 /var/data/ o chmod 755 /var/data/

Tenga cuidado al usar el interruptor “-R”, ya que también cambia los permisos de todos los subarchivos y carpetas.

664 son los permisos de archivo estándar de Apache y 755 los permisos de carpeta estándar.

Espero que esto ayude 🙂

Estrella

Recuerda difundir esta noticia si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *