Configuración de usuario
Entonces, comencemos agregando el usuario principal al grupo de usuarios de Apache:
sudo usermod -a -G www-data demo
Eso agrega la 'demostración' del usuario al grupo 'www-data'. Asegúrese de utilizar las opciones -a y -G con el comando usermod que se muestra arriba.
Deberá cerrar la sesión y volver a iniciarla para habilitar el cambio de grupo.
Consulta los grupos ahora:
groups
...
# demo www-data
Así que ahora soy miembro de dos grupos: el mío (demo) y el grupo Apache (www-data).
Configuración de carpeta
Ahora debemos asegurarnos de que la carpeta public_html es propiedad del usuario principal (demo) y es parte del grupo Apache (www-data).
Vamos a configurar eso:
sudo chgrp -R www-data /home/demo/public_html
Como estamos hablando de permisos, agregaré una nota rápida con respecto al comando sudo: es un buen hábito usar rutas absolutas (/ home / demo / public_html) como se muestra arriba en lugar de rutas relativas (~ / public_html). Asegura que sudo se esté utilizando en la ubicación correcta.
Si tiene una carpeta public_html con enlaces simbólicos en su lugar, tenga cuidado con ese comando, ya que seguirá los enlaces simbólicos. En los casos de una carpeta public_html en funcionamiento, cambie cada carpeta a mano.
Setgid
Bien hasta ahora, pero recuerde que el comando que acabamos de dar solo afecta a las carpetas existentes. ¿Qué pasa con algo nuevo?
Podemos establecer la propiedad para que cualquier cosa nueva también esté en el grupo 'www-data'.
El primer comando cambiará los permisos del directorio public_html para incluir el bit "setgid":
sudo chmod 2750 /home/demo/public_html
Eso asegurará que cualquier archivo nuevo reciba el grupo 'www-data'. Si tiene subdirectorios, querrá ejecutar ese comando para cada subdirectorio (este tipo de permiso no funciona con '-R'). Afortunadamente, se crearán nuevos subdirectorios con el bit 'setgid' configurado automáticamente.
Si necesitamos permitir el acceso de escritura a Apache, a un directorio de cargas, por ejemplo, entonces configure los permisos para ese directorio así:
sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads
Los permisos solo deben establecerse una vez, ya que a los archivos nuevos se les asignará automáticamente la propiedad correcta.