Tengo una pregunta simple, sin embargo, me cuesta entender cómo hacer esto de manera segura.
Tengo una aplicación web basada en PHP que se ejecuta en Linux (Centos7), tengo acceso de "usuario" con privilegios Sudo en el servidor Linux.
El servidor web (Apache) se ejecuta como un usuario "apache" con un grupo "apache",
El problema es que cuando intento implementar aplicaciones usando WinSCP, obtengo errores de permiso denegado, la ÚNICA forma en que puedo resolver este problema es hacer una
usermod -g apache myusername
chmod 775 /var/www/html
No quiero darle 775 a toda la carpeta web.Creo que es un gran problema de seguridad. ¿Cuál es la forma más segura de archivar este tipo de tarea?
¿Cómo puedo implementar mi aplicación usando Winscp con mi cuenta de usuario pero como usuario de Apache? ¿O alguna otra sugerencia sobre una práctica industrial común que se considere segura?
Respuesta1
Hay varias formas recomendadas de resolver este problema.
- Agregue acceso de escritura
/var/www/html
al usuario que inicia sesión a través de WinSCP/SFTP. Esto se puede hacer de múltiples maneras.- Cambiar el grupo al usuario en ejecución (y otorgar acceso de escritura)
Nota: Esto funciona porque siempre hay un grupo Unix creado para los usuarios.sudo chgrp <user> /var/www/html sudo chmod g+w -R /var/www/html
- Crear un nuevo grupo Unix que contenga tanto apache como al usuario (y otorgar acceso de escritura)
sudo groupadd <groupname> sudo chgrp <groupname> /var/www/html sudo chmod g+w -R /var/www/html
- Cambiar el grupo al usuario en ejecución (y otorgar acceso de escritura)
- Ejecute el servicio Apache cuando el usuario inicie sesión a través de WinSCP/SFTP. (enlace)
- Mover la raíz del documento de Apache
/var/www/html
(simplemente creando un enlace simbólico desde /var/www/html a un directorio propiedad del usuario de implementación o actualizando la configuración de Apache)