¿Debo implementar con el mismo usuario que ejecuta el sitio web?

¿Debo implementar con el mismo usuario que ejecuta el sitio web?

Tengo un sitio web administrado por Nginx y recientemente configuré compilaciones e implementaciones de Travis para él.

Nginx ejecuta el sitio web como www-datausuario. Creé un usuario deploypara que Travis pueda iniciar sesión en el servidor a través de SSH e implementar el sitio web. Los archivos implementados se almacenan con deployel usuario como propietario, que es diferente al usuario que ejecuta el sitio web ( www-data).

Tengo miedo de tener problemas de permisos al ejecutar el sitio web con esta configuración. ¿Debo utilizar el mismo usuario www-data/ deploypara ejecutar e implementar el sitio web? Al utilizar este enfoque, ¿tendré problemas al permitir que el usuario que ejecuta el sitio web inicie sesión de forma remota a través de SSH?

Por favor ilumíname sobre esto.

Respuesta1

En realidad, los archivos no deberían ser propiedad de www-dataporque eso significa que Nginx puede modificarlos, lo que en la mayoría de los casos no es lo que desea (a menos que sea un CMS que necesita actualizarse automáticamente).

Por lo tanto, todos los archivos deberían ser propiedad de deploy.

Si es un CMS y necesita escribir en algunas carpetas, entonces esas pocas (¿una?) carpetas deberían ser propiedad de www-data. Eso puede causar un problema si la implementación también realiza la primera instalación. Ofrezca al usuario ejecutar un paso manual o haga que una herramienta especial haga ese trabajo, pero si es algo único, hágalo manualmente, será bastante fácil (especialmente porque solo tiene una carpeta como esa). ¿verdad?) El CMS también puede indicarle si existe tal problema y detenerse en lugar de publicar páginas. De esa forma lo sabrás inmediatamente y podrás evitar tener problemas cuando intentes subir un archivo o alguna acción similar.

Por supuesto, los archivos no son propiedad de, www-datapero deben ser legibles por www-data. Así que hazlo legible para otros ( -rw-r--r--) o considera configurar el grupo en www-data( -rw-r-----). En la mayoría de los casos, he visto personas que ni siquiera se arriesgan a utilizar el grupo. Simplemente permiten que otros accedan a los archivos porque así es más seguro.

Por supuesto, también significa que Nginx no tendría derechos de acceso al deployusuario ni al grupo.

información relacionada