Pregunta

Me gustaría construir una aplicación web sencilla, que gestiona algún directorio en el servidor. Quiero darle a la gente la opción de utilizar chown y chmod.

¿Cuál es la forma más segura para dar este permiso PHP? La cosa más rápida es simplemente ejecutando Apache y PHP como root, pero eso no parece ser una buena idea.

Otra cosa que pensé, fue la creación de una secuencia de comandos independiente que tiene setuid root ..

Gracias!

¿Fue útil?

Solución

Bueno, ciertamente suena como una idea peligrosa para empezar y yo preferiría sentarse y pensar a través de toda la estrategia de lo que está tratando de lograr.

El peligro es escalada de privilegios de un script ejecutable que un usuario remoto puede modificar o cargar, por supuesto. Completa chown / chmod en una aplicación web es equivalente a apenas pegar la contraseña de root en la página.

¿Qué es exactamente lo que tiene que suceder?

Si el chown tiene que pasar por alguna razón, pero no a la raíz (esperamos) a continuación, la funcionalidad debe ser envuelto. Me gustaría tener las solicitudes de los usuarios y ponerlos en cola, y luego tener un proceso separado (podría ser la cáscara, PHP, Perl, cualquier cosa) que se ejecuta como root por cron comprobar esta cola, comprobar para ver si la solicitud se ajusta a los parámetros permitidos, y hacer los cambios .

Otros consejos

Una forma sería la de configurar sudo en su máquina (asumiendo que es una máquina Linux). Sudo le permite ejecutar comandos elevados, que se rigen por las restricciones establecidas en el archivo sudoers.conf. Utilice reglas ajustados a limitar su uso a los comandos necesarios en un directorio específico para el usuario el servicio web se ejecuta bajo (como www-data), y luego llamar a la consola de comandos de su script PHP algo así como tis:

shell_exec("sudo chmod 777 dirname");

No asegurarse de que su configuración de sudo es apretado, para asegurar que romper será casi imposible.

Tal vez usted debe buscar en los comandos PHP: chmod, chown, chgrp y fileperms

chmod

chmod("/somedir/somefile", 0600);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top