Hermes escribió:Bueno, el tema de lo permisos es un tanto complejo. Tenemos dos tipos de permisos aquí, unos referentes a ficheros (lectura/escritura/ejecución y algún que otro flag en referencia a los ficheros) y otros que tienen la pinta de afectar a los procesos.
Incluso si los permisos de fichero son correctos, puede haber problema debido a esto último.
En principio hay una rutina en el kernel que centraliza los permisos de los procesos, pienso, que es llamada desde cientos de puntos distintos.
Esta rutina, devuelve 1 o 0 para permitir o denegar, pero es posible que haga algo más (o la aplicacion deba cumplir otros requisitos) y dependiendo de eso, algo podría funcionar o no.
Desde mi payload se puede configurar de 3 formas: en una, se deja pasar a la rutina normal y por tanto, se aplican los permisos como corresponda. En otro modo, nunca se llama a la rutina, pero prohíbe ciertas llamadas (y eso hace que juegos como el F1 2010, funcionen, con respecto al original psjailbreak, donde el mando ni siquiera era detectado) y el último modo, tampoco llama a la rutina, pero lo permite todo.
Este cúmulo de cosas desconocidas y que los modos para dar permisos, consisten mas en no hacer nada y devolver algo, podría hacer que por ejemplo, si no se ejecuta un programa en un directorio que sea padre de donde está el juego, el juego no vaya incluso si hemos fijado los permisos, por que falta algo que no se ha inicializado y que por la rutina normal diría nones, pero ahora dice "si, si, continua", pero sigue faltando eso.
Por esa razón, lo aconsejable sería que el manager estuviera en el mismo sitio donde estén los juegos y que los permisos de ficheros fueran fijados en la forma que lo hacía el open manager original (el ftp ese que incluyen los manager, aparte de fallar como una escopeta de feria y que tal vez no copie correctamente todos los ficheros, fija unos permisos distintos, lo cual es especialmente problemático con los directorios. No se si el FTP blackbox lo hace correctamente o no), pues es la manera probada que funciona. Yo los juegos los suelo pasar desde el lector o desde disco duro externo, sobre todo porque suelo hacer copias de seguridad ahí (no es recomendable tener una sola copia que encima es de trabajo, por si se estropea algo)
También obviamente, limpiar los datos del juego si se quedó pillado en una prueba anterior, ayuda y mucho, si se crearon con unos permisos diferentes.
Saludos
Vamos, grosso modo lo que hace la aplicación fix permissions no es otra cosa que llamar a dicha rutina para que corregir los permisos erróneos adjudicados tras la transferencia FTP, ¿no?
Supongo que no costaría demasiado portar mi código para tener una transferencia FTP en condiciones (como ya has dicho, los que integran los managers son muy precarios y no integran muchas funciones útiles como poder cambiar una carpeta de directorio sin tener que recurrir a borrarla y volver a subirla)... luego hacer que otorgase los permisos correspondientes supongo que sería cuestión de establecer los mismos que la carpeta en la que se copien, además de llamar a la rutina correspondiente...
Aiss... me parece que me voy a entretener una buena temporada entre portar el código y lograr (si es que llego a lograrlo) que fije los permisos como toca.
Y si no lo consigo, al menos me entretendré volviendo a programar después de tanto tiempo
Salu2, Snake!