También publiqué esta pregunta en StackExchange y recibí una respuesta realmente completa que otros podrían encontrar útil. Del usuario Lekensteyn:
“Se pueden otorgar permisos al propietario, grupo y otros.
Primero, decida qué permisos son necesarios y qué usuarios están involucrados:
- Nginx ejecutándose como www-data (grupo www-data): solo lectura
- php-fpm ejecutándose como www-data (grupo www-data): lectura y escritura
(si desea permitir operaciones como chmod, debe ejecutar php-fpm como usuario de SFTP. Cuidado: si alguien puede ejecutar comandos en su servidor desde PHP, él / ella también podrá modificar sus archivos, por ejemplo). bashrc!) - sftp / SSH: permisos completos
- Otros usuarios: sin permisos de lectura y escritura
Solo el propietario de un archivo / directorio puede cambiar los permisos y se prefiere otorgar al usuario SSH esta propiedad. ¿Por qué? Porque es idiota que no puedas modificar tus propios archivos en el webroot y hacer todo como root es una mala idea.
Los usuarios normales no pueden cambiar el grupo de un archivo / directorio, solo el root puede hacerlo. Un bit SETGID especial hace que cada archivo y directorio de un directorio herede el grupo. Con los permisos correctos establecidos, tanto php-fpm como el usuario SSH pueden modificar archivos.
- ¿Cuáles son los sitios web más populares en Camboya?
- ¿Qué blog de desarrollo web tiene el mejor contenido?
- ¿Es suficiente 1 GB de alojamiento web para construir un sitio web?
- ¿Cómo se les ocurren a las personas ideas sorprendentes para programas y sitios web?
- ¿Cuál es la mejor manera de construir un blog familiar como un sitio web?
- Propietario: su usuario SSH
- Grupo: www-data
- Permisos para archivos: rw-rw—- (0660)
- Permisos para directorios: rwxrwx— (2770) El bit de ejecución (2) es necesario para descender a un directorio. Ejecute ‘permisos de archivo’ de información de coreutils para obtener más información sobre este bit
- umask 007 para que el propietario y el grupo puedan escribir en archivos / directorios y otros usuarios no obtengan permisos.
Suponiendo que su raíz web se encuentra en / var / www / website1, cambie el propietario / grupo y los permisos ejecutando:
sudo chown -R your_ssh_user_here: www-data / var / www / website1
sudo find / var / www / website1 -type f -exec chmod 660 {} \;
sudo find / var / www / website1 -type d -exec chmod 2770 {} \;
Añádete al grupo www-data:
sudo usermod -a -G www-data your_ssh_user_here
Debe volver a iniciar sesión para convertirse en miembro del grupo. Se necesita una configuración adicional para garantizar que los sitios web no puedan acceder a otros archivos si php-fpm se ejecuta como el mismo usuario “.