Tag Archive | root

Borrar carpetas con problemas de permisos en Android


Hola lectores

Tengo un Samsung Galaxy S3 que como otros dispositivos con Android 4 (ICS) ahora tienen la memoria interna en una misma partición que los datos del sistema de manera que no es necesario que el sistema desmonte la partición mientras se conecta el celular al PC (por ej pueden ver sus fotos desde el celular mientras desde el PC se están subiendo unos archivos al celular y se están viendo las carpetas), eso se logra con el uso de MTP, aunque esto acarrea más problemas para usuarios de GNU/Linux porque al montar como unidad externa el celular, se pierde la conexión constantemente porque MTP fue pensado para sistemas Windows inicialmente, en un próximo post hablaré de las alternativas que tenemos para acceder a los archivos de nuestro celular Android con estas características vía GNU/Linux.

Me conecté al celular por SSH con FileZilla (más sobre esto en el próximo post) y creé unas carpetas para meter unos documentos PDF, desde allí empezaron mis problemas dado que Adobe Reader no me reconoció los PDF’s y luego no pude eliminar las carpetas (el motivo de este post). Tengo mi celulear rooteado por lo que se supone que hay permiso para eliminar cualquier archivo siempre y cuando el sistema de archivos esté montado con permisos de escritura y podía eliminar cualquier archivo en la memoria interna (reconocida por Android 4.0 y superior como /data/media, /storage/sdcard0 pero se puede acceder por cualquier medio). Esto fue lo que pasó:

  • El problema fue que yo podía eliminar cualquier archivo en la sdcard interna menos las carpetas que había creado previamente
  • Algo que noté más raro aún fue que puedo renombrar las carpetas y hasta copiarlas a otra partición con permisos de escritura como /data pero no puedo cortar las carpetas o eliminarlas de la SD interna: renombré las carpetas a .garbage and .trash pero tampoco pude eliminarlas
  • Traté también creándome dos carpetas con los mismos nombres en el PC y subirlas a la memoria del teléfono pero no sirvió tampoco, quedé con los mismos errores de no poder eliminarlas por permisos
  • Traté de crear un archivo en las carpetas pero también falló
    touch .garbage/algo
    touch: .garbage/algo: Permission denied
  • Por CMW (ClockWorkMode, voy a escribir un tutorial de rooteo pronto…) probé formatear la SD pero como no es una partición aparte falla el formateo al hacer umount, wice wipes (incluso reinstalé CM10 -una ROM de Android muy popular- y sigue igual), también traté un hard reset (*2767*3855#) pero el código no hace nada en CM10 (creo que es propio de Samsung con stock y no aplica para mi celular con una ROM personalizada)

    Después de estar metido un rato en la terminal buscando soluciones y mirando los puntos demontaje encontré esto

    /dev/fuse on /storage/sdcard0 type fuse (rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,
    default_permissions,allow_other)

    que sifnifica que se monta la memoria interna como un usuario y grupo específicos (1023), así que verifiqué en la lista de procesos qué usuarios los estaban ejecutando y determinar cuál era el usuario con ID 1023 y determiné que era el usuario media_rw con el cual se estaba ejecutando este proceso

    media_rw   0:00 /system/bin/sdcard /data/media 1023 1023

    En este paso determiné que la memoria interna se monta como este usuario y quizá logeandose como él (su media_rw) se pudieran borrar las carpetas.

    Probando con el descubrimiento anterior finalmente pude borrar las carpetas con el siguiente procedimiento:

    1. Logearse como root (pueden omitir esto si se conectan por SSH con SSHDroid)

    su

    2. Montar /system con permisos de escritura

    mount -o rw,remount -t ext4 /dev/block/mmcblk0p9 /system

    3. Volver a ejecutar el comando sdcard

    /system/bin/sdcard /data/media 1023 1023

    4. Ir a la carpeta /data/media y borrar las carpetas no deseadas (en mi caso se llaman .trash y .garbage)

    rm -rf .trash .garbage

    5. Volver a montar como sólo lecutra /system (por seguridad)

    mount -o ro,remount -t ext4 /dev/block/mmcblk0p9 /system

    6. Se puede verificar que ya no existen las carpetas con

    ls -lsa /data/media/

    y la salida debería ser algo como (no están las carpetas .trash y .garbage

    # ls -lsa /data/media/
     total 443361
        4 drwxrwxr-x   14 media_rw media_rw      4096 Oct 12 10:25 .
        4 drwxrwx--x   23 system   system        4096 Oct 12 06:01 ..
        4 drwxrwxr-x    2 media_rw media_rw      4096 Oct 12 06:06 .mmsyscache
        4 drwxrwxr-x    2 media_rw media_rw      4096 Oct 12 06:01 Alarms
        4 drwxrwxr-x    3 media_rw media_rw      4096 Oct 12 06:03 Android
        4 drwxrwxr-x    2 media_rw media_rw      4096 Oct 12 06:01 DCIM
        4 drwxrwxr-x    2 media_rw media_rw      4096 Oct 12 06:01 Download
        4 drwxrwxr-x    5 media_rw media_rw      4096 Oct 12 06:09 GOLauncherEX
        4 drwxrwxr-x    2 media_rw media_rw      4096 Oct 12 06:01 Movies
        4 drwxrwxr-x    2 media_rw media_rw      4096 Oct 12 06:01 Music
        4 drwxrwxr-x    2 media_rw media_rw      4096 Oct 12 06:01 Notifications
        4 drwxrwxr-x    3 media_rw media_rw      4096 Oct 12 08:55 Pictures
        4 drwxrwxr-x    2 media_rw media_rw      4096 Oct 12 06:01 Ringtones
     136520 -rw-rw-r--    1 media_rw media_rw 139791302 Oct 11 23:06 cm-10-20121011.zip
     85104 -rw-rw-r--    1 media_rw media_rw  87138923 Oct 11 23:02 gapps-jb.zip
        4 drwxrwxr-x    3 media_rw media_rw      4096 Oct 12 06:06 xiialive

    Espero les ayude a quienes tengan un problema similar y puedan controlar mejor sus dispositivos Android

    Don’t Worry……Be Linux!!!!!!!!

  • Conectar OpenMoko al PC


    En este post les describiré cómo conectar el OpenMoko a un computador para acceder a los archivos del OpenMoko transferir archivos en ambas vías y gestionar los paquetes del FreeRunner. Además es posible conectarse a internet en el FreeRunner utilizando el computador y probar por ejemplo las aplicaciones que hagan uso del GPS como TangoGPS (instalada por defecto en la mayoría de distros del OpenMoko).

    Para leer un tutorial completo con los aspectos técnicos de la conexión y cómo hacerla de la manera fácil o avanzada, pueden verlo en esta página del wiki de OpenMoko.

    Sin más preámbulos, voy a describir los pasos para tener un Neo FreeRunner conectado a nuestro PC de la manera más sencilla:

    1. Aunque suene lógico, conectar el cable del PC al OpenMoko

    En la terminal del computador digitamos estos comandos (como root o empleando sudo):

    2. sudo ifconfig usb0/eth1 (en SHR) 192.168.0.200 netmask 255.255.255.0 up

    En este paso, si tenemos OM instalado, la interfaz será usb0 (cero) y si tenemos por ej SHR, la interfaz será eth1
    3. sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
    4. sudo sysctl -w net.ipv4.ip_forward=1

    5. Ya podremos iniciar sesión remotamente en el OpenMoko usando ssh así:

    ssh root@192.168.0.202

    La primera vez que nos conectemos, el PC guardará una configuración para saber que nos estamos conectando a un host seguro; la contraseña del usuario root en el OpenMoko por defecto es vacía.

    6. Hasta el paso anterior podremos hacer la mayoría de lo que necesitamos para actualizar/flashear el OpenMoko, y con los comandos adicionales que introdujimos en los pasos 3 y4, ya tendremos internet en nuestro FreeRunner con lo que podremos hacer las actualizaciones desde la consola de éste o simplemente disfrutar de las aplicaciones que hacen uso de internet (TangoGPS, Pidgin, etc)

    Para probar conectividad a internet, el clásico:

    ping http://www.google.com

    Desde la terminal del PC (donde iniciamos la sesión ssh en el OpenMoko) bastará para saber si tenemos o no internet

    Configuraciones Adicionales

    Como siempre para las personas que desean ir más allá, GNU/Linux ofrece una o más alternativas de hacerlo.

    * Es molesto tener que ejecutar siempre estos comandos que describí arriba cada vez que se conecta el OpenMoko al PC y aunque esta no es probablemente la forma más ortodoxa de solucionar ésto, cree un script que reúne estos comandos para ejecutarlos de una manera más sencilla. Vale la pena aclarar que está hecho para conectar con un OpenMoko que tenga SHR como distribución, para que funcione con OM, simplemente se cambia eth1 por usb0 (cero) como dije anteriormente.

    La ejecución del script se tendría que hacer como usuario root (o con sudo) de la siguiente forma (si el archivo está en el escritorio):

    sudo sh ~/Desktop/usb_networking.sh

    * Si esto de recordar IP’s no va con ustedes, pueden agregar un nombre para el OpenMoko para que todo sea más fácil:

    Se edita el archivo /etc/hosts (Por ej: sudo gedit /etc/hosts)

    Y se añade una línea como ésta:

    192.168.0.202   FreeRunner

    Donde FreeRunner es el nombre que se le da al OpenMoko

    Así, podríamos conectarnos con ssh digitando:

    ssh root@FreeRunner

    *Si la terminal no les parece suficientemente agradable para copiar archivos desde y hacía el OpenMoko, existe una forma para que los usuarios de Gnome accedan al sistema de archivos del OpenMoko a través de nautilus. Es muy sencillo, se abre una instancia de nautilus y en la ruta se introduce:

    sftp://root@FreeRunner/

    FreeRunner es el nombre que es estableció para el OpenMoko en el paso anterior

    Aquí un pantallazo de ésta última parte que resume todo lo tratado en el post:

    OpenMoko desde Nautilus

    OpenMoko desde Nautilus

    Eso es todo por ahora, esperen más adelante Por primera vez en el OpenMoko a través de ssh y Cómo instalar una distribución en el OpenMoko.

    Don’t Worry…………Be Linux!!!!!!!!!!!!!