[Olpc-uruguay] Consulta sobre Rambo

ana ana.cichero en gmail.com
Mar Mar 9 19:07:10 EST 2010


Felicitaciones listeros !

Este hilo es un libro abierto :)  Es un lujo leérlos.

Les confieso, que siempre leo lo que escriben,  aunque a veces no entienda
nada o casi. Supongo no soy la única que lo hace.
En fin, por casa, tema permisos linux pronto ;) , muy lindo diagrama 644
pm...  y con rambo... algo mas que nada, jaja.

Gracias de corazón y Sigan Adelante con la red. La mesh andando es un golazo
para proponer cosas en clase.

muchos sds.


2010/3/9 Flavio Danesse <fdanesse en gmail.com>

> Excelente, con eso queda completo el artículo.
>
> Lo puse en mi web:
> http://sites.google.com/site/flaviodanesse/programacion-p/rainbow-en-la
> y en mi bitacora del jam: http://drupal.ceibaljam.org/?q=node/713
>
>
> me está quedando aprender:
>
> La red, la interfaz de la camara y el motor de voz.
>
>
>
> El 9 de marzo de 2010 18:39, Pablo Moleri <pmoleri en gmail.com> escribió:
>
> Buenísimo que lo solucionaste y preparaste este resumen con toda la
>> información.
>>
>> Me quedó picando por qué el 0660 y no 660, y resulta que el 0 anterior es
>> para que Python lo interpete como octal y se convierta en la máscara binaria
>> que estuvimos discutiendo.
>>
>> Salduos,
>>
>> Pablo
>>
>> 2010/3/9 Flavio Danesse <fdanesse en gmail.com>
>>
>>> *Si, eso era solo una prueba que hice, el tema es que hay un detalle con
>>> los permisos, no es 664 sino 0660 (No se que hace el 1º 0).
>>>
>>> Ya quedó solucionado, todo ok y comprobado, les mado lo que aprendí y
>>> luego lo posteo en la web y en la bitacora del jam:*
>>>
>>> La primera vez que ejecutas una actividad x en la xo, rainbow crea un
>>> grupo para ella, por ejemplo 10005
>>> Las sucesivas veces que se ejecute esa actividad, rainbow creará un nuevo
>>> usuario y lo agregará a ese grupo.
>>>
>>> La primera vez será 10000, luego 10002 y así sucesivamente de 2 en 2.
>>>
>>> rainbow genera en /home/olpc/
>>> una estructura de directorios /isolation/1/
>>> y dentro de ella genera los siguientes directorios:
>>>
>>> drwxr-xr-x 2 olpc olpc bundle_id_to_gid
>>> drwxr-xr-x 2 olpc olpc gid_pool
>>> drwxr-xr-x 3 olpc olpc gid_to_data_dir
>>> drwxr-xr-x 2 olpc olpc uid_pool
>>> drwxr-xr-x 2 olpc olpc uid_to_gid
>>> drwxr-xr-x 3 olpc olpc uid_to_home_dir
>>> drwxr-xr-x 2 olpc olpc uid_to_instance_dir
>>>
>>> dentro de: /home/olpc/isolation/1/uid_to_gid/
>>>
>>> se crea un link: lrwxrwxrwx root root 10000 -> 10005
>>>
>>> dentro de: /home/olpc/isolation/1/uid_to_instance_dir/
>>>
>>> se crea un link: lrwxrwxrwx root root 10000 ->
>>> /home/olpc/isolation/1/uid_to_home_dir/10000
>>>
>>> en /home/olpc/isolation/1/uid_to_home_dir/
>>>
>>> se crea un directorio: drwxrws--- 7 10000 olpc 10000 (la s significa que
>>> adquiere los permisos de propietario del archivo o directorio)
>>>
>>> dentro de este directorio, se crean:
>>>
>>> lrwxrwxrwx 1 root olpc data ->
>>> /home/olpc/isolation/1/gid_to_data_dir/10005
>>> lrwxrwxrwx 1 root olpc instance -> .
>>> drwx--S--- 2 10000 10005 tmp
>>>
>>> Cuando se utiliza:
>>>
>>> os.path.join(os.environ['SUGAR_ACTIVITY_ROOT'])
>>>
>>> o lo que es igual:
>>>
>>> os.path.join(activity.get_activity_root())
>>>
>>> Se devolverá: /home/olpc/isolation/1/uid_to_home_dir/10000
>>> Cada vez que ejecutes la actividad, devolverá un directorio diferente,
>>> debido a lo explicado al principio de este artículo:
>>> /home/olpc/isolation/1/uid_to_home_dir/10000 (este ultimo numero aumenta
>>> de 2 en 2 para cada ejecución de la actividad)
>>>
>>> Rainbow asegura persistencia de datos entre reinicios solo dentro de
>>> os.path.join(activity.get_activity_root(), "data").
>>> Pero, cada ejecución de la actividad genera un nuevo usuario por lo que
>>> os.path.join(activity.get_activity_root(), "data") siempre será diferente.
>>> Sin embargo, os.path.join(activity.get_activity_root(), "data"), siempre
>>> será un link a /home/olpc/isolation/1/gid_to_data_dir/10005 que es el
>>> directorio para persistencia de datos del grupo de usuarios de la actividad.
>>> Cualquier archivo almacenado allí, se guardará con los permisos 644
>>> *
>>> Como ejemplo:*
>>> -rw-r--r-- 1 10002 10005 Radios.db
>>>
>>> (recordar que 10002 varía. Acá 10002 nos indica que el archivo se creó en
>>> la segunda instancia de ejecución de la actividad)
>>> Para poder modificar estos archivos en diferentes instancias de la
>>> actividad, es necesario cambiar sus permisos para que pueda ser modificado
>>> por todos los usuarios del grupo al que pertenece la actividad.
>>>
>>> Se puede cambiar los permisos de estos archivos mediante:
>>>
>>>
>>> directorio_base = os.path.join(activity.get_activity_root(), 'data/')
>>> os.chmod(os.path.join(directorio_base, 'Radios.db'), 0660)
>>>
>>> En este caso, cambiamos los permisos del archivo creado, de 644 a 664 ya
>>> que el segundo 6 da permisos de escritura para todo el grupo, el 4 solo daba
>>> permisos de lectura al grupo.
>>>
>>> *De modo que el código de este ejemplo sería:*
>>>
>>> from sugar.activity import activity
>>> from ManejodeBasedeDatos import ManejodeBasedeDatos
>>>
>>>
>>> # Directorio para crear la base de datos
>>> directorio_base = os.path.join(activity.get_activity_root(), 'data/')
>>> mi_base = os.path.join(directorio_base + "Radios.db")
>>>
>>> # Si el directorio no existe, crearlo
>>> if not os.path.exists(directorio_base):
>>>     os.mkdir(directorio_base)
>>>
>>> # Si la base de datos no existe, crearla
>>> if not os.path.exists(mi_base):
>>>     BasedeDatos = ManejodeBasedeDatos(mi_base)
>>>     BasedeDatos.CrearBasededatos()
>>>     BasedeDatos.Llenar_Base()
>>>     os.chmod(os.path.join(directorio_base, 'Radios.db'), 0660)
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> El 9 de marzo de 2010 17:00, Pablo Moleri <pmoleri en gmail.com> escribió:
>>>
>>> Ojo, 644 se traduce como:
>>>>           6      4     4
>>>> 110  100  100
>>>> rwx  rwx  rwx     (read, write, execute)
>>>> prop grp  otros
>>>> O sea que propietario es el único con acceso de escritura.
>>>>
>>>> Tengo entendido que en rainbow cada ejecución se hace con un usuario
>>>> distinto, por lo tanto en la segunda ejecución ya no es el propietario y por
>>>> eso no lo puede modificar. Sin embargo rainbow asegura que para una misma
>>>> aplicación el grupo es el mismo, por lo tanto agregando permisos de
>>>> escritura al grupo estarías hecho:
>>>>
>>>> os.chmod(os.path.join(directorio_base, 'Radios.db'), 664)
>>>>
>>>> Espero que esto te sea de ayuda.
>>>>
>>>> Saludos,
>>>> Pablo
>>>>
>>>> 2010/3/9 Flavio Danesse <fdanesse en gmail.com>
>>>>
>>>> No, hay un error en lo que dije en el mail anterior, no es correcto,
>>>>> estoy haciendo pruebas ya les cuento que saco en claro.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> El 9 de marzo de 2010 16:05, Flavio Danesse <fdanesse en gmail.com>escribió:
>>>>>
>>>>> Hola gabriel y pablo, gracias por responder y tan rapido.
>>>>>>
>>>>>> El tema es así:
>>>>>>
>>>>>> La idea del código es que la primera vez que se ejecute la actividad,
>>>>>> busque la base de datos y si no la encuentra la crea ya que las radios están
>>>>>> definidas en el código. Las siguientes veces que se ejecute la actividad la
>>>>>> base sólo se carga desde ese directorio.
>>>>>>
>>>>>> La primera vez que ejecuto el código, se crea la base y puedo agregar
>>>>>> elementos en ella, pero la proxima vez que ejecute el codigo, accedo a la
>>>>>> base pero si intento escribir en ella me dice que es solo lectura.
>>>>>>
>>>>>> Para probar el tema de los permisos intenté:
>>>>>> os.chmod(os.path.join(directorio_base, 'Radios.db'), 644)
>>>>>> No funcionó (probé diferentes permisos, incluso todos)
>>>>>>
>>>>>> No es lo mismo:
>>>>>> os.path.join(os.environ['SUGAR_ACTIVITY_ROOT'],'data/')
>>>>>> que:
>>>>>>
>>>>>> os.path.join(activity.get_activity_root(), 'data/')
>>>>>>
>>>>>> Son diferentes directorios, sin embargo, en la práctica no hay
>>>>>> diferencia, pasa lo mismo.
>>>>>>
>>>>>> Subí el paquete .xo que tengo hasta el momento a:
>>>>>> http://sites.google.com/site/sugaractivities/ceibalradio-1-0
>>>>>> (para agregar una radio hay que hacer click con boton derecho sobre
>>>>>> cualquier radio de las existentes)
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> El 9 de marzo de 2010 11:41, Gabriel Eirea <geirea en gmail.com>escribió:
>>>>>>
>>>>>> Flavio:
>>>>>>>
>>>>>>> No sé si tendrá algo que ver, pero para acceder al directorio donde
>>>>>>> uno puede escribir en vez de usar activity.get_activity_root() yo uso
>>>>>>> la variable de entorno SUGAR_ACTIVITY_ROOT, así:
>>>>>>>
>>>>>>> os.path.join(os.environ['SUGAR_ACTIVITY_ROOT'],'data')
>>>>>>>
>>>>>>> También habría que ver como dice Pablo con qué permisos se crea el
>>>>>>> archivo, podés mandar el código de la clase ManejodeBasedeDatos?
>>>>>>>
>>>>>>> Saludos,
>>>>>>>
>>>>>>> Gabriel
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> El día 8 de marzo de 2010 23:57, Pablo Moleri <pmoleri en gmail.com>
>>>>>>> escribió:
>>>>>>> > Flavio, no me queda claro si no podés "acceder" o "modificar" la
>>>>>>> base de
>>>>>>> > datos. En cualquiera de los casos sería bueno que miraras con que
>>>>>>> permisos
>>>>>>> > queda creado el archivo "Radios.db" (ls -l), es necesario que los
>>>>>>> permisos
>>>>>>> > del grupo permitan lectura y escritura.
>>>>>>> >
>>>>>>> > Saludos,
>>>>>>> > Pablo
>>>>>>> >
>>>>>>> > 2010/3/8 Flavio Danesse <fdanesse en gmail.com>
>>>>>>> >>
>>>>>>> >> Tengo una base de datos que la actividad crea así:
>>>>>>> >>
>>>>>>> >> # Directorio para crear la base de datos
>>>>>>> >> directorio_base = os.path.join(activity.get_activity_root(),
>>>>>>> 'data/')
>>>>>>> >> mi_base = os.path.join(directorio_base + "Radios.db")
>>>>>>> >>
>>>>>>> >> # Si el directorio no existe, crearlo
>>>>>>> >> if not os.path.exists(directorio_base):
>>>>>>> >>     os.mkdir(directorio_base)
>>>>>>> >>
>>>>>>> >> # Si la base de datos no existe, crearla
>>>>>>> >> if not os.path.exists(mi_base):
>>>>>>> >>     BasedeDatos = ManejodeBasedeDatos(mi_base)
>>>>>>> >>     BasedeDatos.CrearBasededatos()
>>>>>>> >>     BasedeDatos.Llenar_Base()
>>>>>>> >>
>>>>>>> >> Luego, en la actividad tengo código que permite agregar datos a la
>>>>>>> base y
>>>>>>> >> actualizarla, sin embargo solo funciona la primera vez que ejecuto
>>>>>>> la
>>>>>>> >> actividad.
>>>>>>> >>
>>>>>>> >> Es decir:
>>>>>>> >>
>>>>>>> >> Instalo la actividad.
>>>>>>> >> La ejecuto por primera vez, con lo cual se crea la base.
>>>>>>> >> Agrego 1 registro y todo funciona perfecto, los datos se almacenan
>>>>>>> y se
>>>>>>> >> conservan luego de reiniciar.
>>>>>>> >>
>>>>>>> >> Sin embargo, en instancias sucesivas de la actividad no puedo
>>>>>>> modificar la
>>>>>>> >> base de datos.
>>>>>>> >>
>>>>>>> >> _______________________________________________
>>>>>>> >> Olpc-uruguay mailing list
>>>>>>> >> Olpc-uruguay en lists.laptop.org
>>>>>>> >> http://lists.laptop.org/listinfo/olpc-uruguay
>>>>>>> >>
>>>>>>> >
>>>>>>> >
>>>>>>> > _______________________________________________
>>>>>>> > Olpc-uruguay mailing list
>>>>>>> > Olpc-uruguay en lists.laptop.org
>>>>>>> > http://lists.laptop.org/listinfo/olpc-uruguay
>>>>>>> >
>>>>>>> >
>>>>>>> _______________________________________________
>>>>>>> Olpc-uruguay mailing list
>>>>>>> Olpc-uruguay en lists.laptop.org
>>>>>>> http://lists.laptop.org/listinfo/olpc-uruguay
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Olpc-uruguay mailing list
>>>>> Olpc-uruguay en lists.laptop.org
>>>>> http://lists.laptop.org/listinfo/olpc-uruguay
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Olpc-uruguay mailing list
>>>> Olpc-uruguay en lists.laptop.org
>>>> http://lists.laptop.org/listinfo/olpc-uruguay
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Olpc-uruguay mailing list
>>> Olpc-uruguay en lists.laptop.org
>>> http://lists.laptop.org/listinfo/olpc-uruguay
>>>
>>>
>>
>> _______________________________________________
>> Olpc-uruguay mailing list
>> Olpc-uruguay en lists.laptop.org
>> http://lists.laptop.org/listinfo/olpc-uruguay
>>
>>
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.laptop.org/pipermail/olpc-uruguay/attachments/20100309/e56f92c9/attachment-0001.htm 


More information about the Olpc-uruguay mailing list