RV: [LUG.ro] Jornadas y Comandos root en PHP
Nicolás Aimetti
lugro@lugro.org.ar
Fri, 25 Nov 2005 17:51:50 +0000
Nunca realice tareas de system admin usando PHP (para eso siempre
preferí perl) y no estaba al tanto que PHP reestringia los llamados al
sistema de las funciones setuid y demás como supongo que lo hace...
Por lo que estuve viendo calculo que se podría desactivar el safe_mode y
demás (aunque no estoy seguro) sin embargo creo que sería la última cosa
que yo haría.
Me gusto bastante la idea que propuso Omar Arino
> 1) Por razones de seguridad tenes que hacer que esta aplicación funcione solo por la interfase lo (127.0.0.1) ya que es una flor de agujero.
> 2) Esta aplicación tiene que dormir mientras espera recibir algo por el puerto configurado.
> 3) Con PHP utilizas las funciones para SOCKET y te conectas con el otro programas. Mandas las señal adecuada.
> 4) Cuando el demonio escucha la señal correcta, ejecuta el programa que reinicia el servicio. Acá sí te puede funcionar el SUDO.
Sin embargo yo le cambiaria una pequeña cosita a esto: Ya que los
sockets pueden ser accedidos por todos los usuarios del sistema, o sea,
no hay permisos a nivel usuario para saber quien puede escribir en los
mismo o no.
No sé si a los sockets de domino unix se les podrá setear algún tipo de
permiso, si se pudiese serían una buena opción para usar.
Sino usando las funcions de IPC, usando una message queue por ejemplo,
mediante los permisos de la misma podrías restringir que sólo el usuario
que vos quieras pueda comunicarse con el proceso que levanta el servicio
deseado...
En caso de que no puedas acceder a las fucniones IPC desde php podrías
implementar algo así mediante archivos (a los cuales tb se les puede
asignar permisos de escritura segun usuario)... sin la necesidad de que
el proceso que chequea el archivo sea corrido con el cron, sino
simplemete hacer un demonio que quede bloqueado leyendo ese archivo, y
comunicarte por ahí (sería un poco más optimo que andar corriendo el
proceso a cada rato)... Claro que usando archivos se complicaría un poco
más por el tema de si hay procesos concurrentes escribiendo, pero eso se
puede manejar sin problemas en unix usando flock.
Saludos,
Nicolás.
Saludos,
Nicolás.