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!!!!!!!!

    Anuncios
  • Instalar extensión PECL en XAMPP (Linux)


    Hola de nuevo…..

    Este es mi primer post en este nuevo blog y me gustaría empezar con pie derecho, hablando de Linux y de información que tal vez es esquiva en internet. Esta vez quiero hablarles de PHP y la instalación de extensiones PECL (The PHP Extension Community Library) usando XAMPP (Apache+PHP fácil de instalar); como ejemplo, hablaremos de la instalación de la extensión APC que sirve para almacenar en caché código interpretado PHP, para optimizar la respuesta de un sistema con demanda alta.

    Si tuviéramos una instalación de PHP+Apache independiente/compilada por nosotros, tendríamos que recompilar todo de nuevo para poder crear la extensión para PHP, pero en XAMPP sólo tenemos que hacer esto una vez (sin tantos parámetros molestos de compilación de PHP) y usar las herramientas que nos ofrece la plataforma para hacer el proceso más sencillo para futuras extensiones que queramos instalar. Procedamos entonces con los pasos para efectuar la instalación de APC en XAMPP:
    1. Descargar versión devel de XAMPP según corresponda con nuestra versión de XAMPP:
    http://sourceforge.net/projects/xampp/files/XAMPP%20Linux/
    2. Descargar código fuente de PHP (según la versión instalada en XAMPP: http://www.php.net/releases/
    3. Descargar código fuente de extensión PECL. Por ejemplo para APC: http://pecl.php.net/package/apc
    4. Instalar versión devel de XAMPP:
    sudo tar -xvf xampp-devel.tar.gz -C /opt
    5. Descomprimir código fuente de PHP y pasarlo a la carpeta
    /opt/lampp/include/php
    6. Compilar PHP como usuario estandar en la carpeta
    /opt/lampp/include/php (puede requerir permisos de escritura)
    ./configue
    make

    Notas: – Pueden requerirse librerías especiales como libxml (libxml2-dev) en este paso, recurrir al gestor de paquetes de nuestra distribución para instalar las librerías que nos pida PHP

    – No se hace make install porque sólo necesitamos esta instancia de PHP para tener lo necesario para compilar la extensión PECL
    7. Descomprimir la extensión (en cualquier ubicación) y ubicados en la carpeta del código
    fuente ejecutar:
    /opt/lampp/bin/phpize
    ./configure –with-php-config=/opt/lampp/bin/php-config
    make
    sudo make install
    Con el paso anterior la extensión debió quedar en el directorio de
    las extensiones de XAMPP (/opt/lampp/lib/php/extensions/no-debug-non-zts-
    20090626 en mi caso)
    8. Activar la extensión en php.ini. Por ejemplo con APC:
    ;APC
    extension=”apc.so”;
    9. Reiniciar Apache:
    sudo /opt/lampp/lampp restart

    Con estos pasos tendremos una nueva sección en la información de PHP con nombre apc como se puede ver en esta imagenAPCSi quieren estos pasos en un formato que puedan almacenar, hice este PDF con las instrucciones detalladas en el post

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

    De vuelta al ruedo


    Hola amigos, he dejado a un lado el blog por diferentes razones, pero quiero retomarlo escribiendo sobre OpenMoko, Linux y Android en cuanto vaya descubriendo cosas en estos aspectos. Tratraré más temas sobre el OpenMoko para que se animen a sacarlo los que lo tengan guardado porque aunque en hardware queda obsoleto frente a otros celulares modernos, en conceptos y en libertad sigue siendo una excelente alternativa para aprender.
    Espero que me lean y dejen sus comentarios

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

    Solucion escritorio negro en Ubuntu 9.10


    Buenas noches, aun les escribo desde el OpenMoko…Esta vez quiero compartirles este truco que les puede ser de ayuda en Ubuntu…
    Ayer actualice un computador de Ubuntu 9.04 al 9.10, el PC tiene una tarjeta de video ATI (muchos de ustedes sabran que ATI y Linux no se llevan muy bien) y todo fue de maravilla a excepcion del escritorio que en vez de verse los iconos de los programas y la imagen de fondo se veia un fondo negro. No se porque se esta presentando el error, pero la solucion mas sencilla es dar click derecho en el escritorio y seleccionar ‘Cambiar fondo de escritorio’ y en la pestania ‘Efectos visuales’ desactivar los efectos seleccinando ‘Ninguno’. En este momento debemos ver los archivos e iconos y el fondo de escritorio que teniamos previamente establecido.

    Obviamente esta no es la mejor solucion pero es una forma de evitar el error. Para mas info miren este hilo en ubuntuforums  y mas propiamente este post donde dan algunas instrucciones adicionales.
    Espero que puedan asi disfrutar de Karmic Koala que para mi es un gran lanzamiento por parte de Ubuntu.

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

    Un post desde el OpenMoko


    Buenas noches….hoy estuve ensayando la conexion wifi del OpenMoko en SHR y como se pueden dar cuenta, tuve exito :D. este es el motivo del post….cuando este en un PC subire una foto para que vean el navegador Midori en accion en el OpenMoko.

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

    Flashear el OpenMoko


    Buenas noches, después de lograr conectar el OpenMoko al PC y acceder a él por SSH (recordamos lo visto en Conectar OpenMoko al PC), lo primero que se debe hacer es actualizar los programas que vienen instalados en OM 2008-08 (el sistema operativo que viene por defecto en el OpenMoko), ésto se hace con un comando similar al usado en distribuciones basadas en debian:

    opkg update && opkg upgrade

    Esto no es todo lo que podemos hacer ahora que tenemos acceso a internet desde nuestro OpenMoko, podremos navegar usando Midori, usar el GPS con TangoGPS y lo mejor de todo, instalar los programas que deseemos, incluyendo distribuciones, lo que cubriremos en este post.

    En posts anteriores nombré algunas distribuciones que tenemos como opciones para instalar en nuestro OpenMoko, particularmente me he interesado por SHR porque parece ser la más prominente y con mejores programas que las otras. La primera vez que la instalé, lo hice en la memoria microSD y después de ensayarla por un tiempo, estaba preparado para instalarla como SO base y probar otras distros (como Debian en la MicroSD). Para comenzar con los pasos para la instalación de una distribución en el OpenMoko vale la pena decir que ésta consta de un archivo que es el kernel (.bin) y un archivo con el sistema de archivos o root file system (.tar.gz si se instala en la microSD o jffs2 si se instala en la memoria NAND).

    A continuación los pasos para efectuar la instalación en la memoria NAND:

    1. Instalar dfu-util en la distro: dfu-util es el paquete que nos servirá para ‘quemar’ o escribir el Kernel y el Root FileSystem en la memoria NAND. Instalar dfu-util en distribuciones como ubuntu será tan sencillo cómo un apt-get install dfu-util. En Arch Linux, podemos recurrir al AUR e instalarlo como se vio en un post anterior con Chromium.

    2. Descargar el kernel y el rootfs: Como había mencionado, éstos son los componentes esenciales de una distribución. Para SHR, se deben descargar desde http://build.shr-project.org/shr-unstable/images/om-gta02/

    Los archivos que debemos descargar son (a fecha Noviembre 13 de 2009)

    – Kernel: uImage-2.6.29-oe11+gitr119844+a3587e4ed77974adfb057af261aaeea4022018e8-r3.5-om-gta02.bin

    – Rootfs: full-om-gta02.jffs2

    3. Bootear el OpenMoko en el menú NOR-Boot: El OpenMoko tiene diversos modos de booteo, el normal es llamado NAND y existe otro que se llama NOR, en el cual podemos escribir el kernel y el sistema de archivos. Como habrán adivinado, ese es el modo en el que tendremos que bootear el OpenMoko para flashearlo. Para entrar en ese modo basta con apagar el OpenMoko y para encenderlo, presionar el botón AUX por algunos segundos y luego presionar el botón de encendido, veremos un menú como éste:

    NO seleccionamos ninguna opción del menú, sino que presionamos repetidamente el botón AUX para evitar que el OpenMoko arranque antes de tiempo. Ahora proseguimos con el siguiente paso

    4. Conectar el OpenMoko al PC: En este paso no establecemos una conexión vía SSH con el OpenMoko, simplemente conectamos el Smartphone al PC a través del cable USB.

    5. Probar conectividad: Debemos comprobar que dfu-util reconoce el OpenMoko, para lo que escribimos en la consola del PC

    dfu-util –list

    Con lo que tendremos una salida como:

    dfu-util – (C) 2007 by OpenMoko Inc.

    This program is Free Software and has ABSOLUTELY NO WARRANTY

    Found Runtime: [0x1d50:0x5119] devnum=9, cfg=0, intf=2, alt=0, name=”USB Device Firmware Upgrade”

    Esto indica que todo está bien y el PC reconoció el OpenMoko

    En este paso debemos estar presionando constantemente AUX para que el OpenMoko no bootee antes de escribir el sistema de archivos y el Kernel.

    6. Escribir el kernel y el sistema de archivos: Si hemos llegado a este paso sin ningún problema, procedemos a ‘quemar’ la imagen del kernel y el rootfs en la memoria NAND del OpenMoko con los siguientes comandos:

    dfu-util -a rootfs -R -D full-om-gta02.jffs2

    En el OpenMoko veremos algo como:

    Starting DFU DOWNLOAD to partition…

    […]

    DFU: Switching to DFU mode

    […]

    Y en la consola del PC:

    dfu-util – (C) 2007 by OpenMoko Inc.
    This program is Free Software and has ABSOLUTELY NO WARRANTY

    Opening USB Device 0x0000:0x0000…
    Claiming USB DFU Runtime Interface…
    Determining device status: state = appIDLE, status = 0
    Device really in Runtime Mode, send DFU detach request…
    Resetting USB…
    Opening USB Device…
    Found Runtime: [0x1d50:0x5119] devnum=10, cfg=0, intf=0, alt=6, name=”rootfs”
    Claiming USB DFU Interface…
    Setting Alternate Setting …
    Determining device status: state = dfuIDLE, status = 0
    dfuIDLE, continuing
    Transfer Size = 0x1000
    bytes_per_hash=1431306
    Starting download: [#####

    Al finalizar el proceso, en el PC debe aparecer

    Starting download: [##################################################] finished!
    state(2) = dfuIDLE, status(0) = No error condition is present
    Done!

    Resetting USB to switch back to runtime mode

    Y el OpenMoko dirá:

    DFU: Switching back to Runtime mode

    Por último escribimos el Kernel con el siguiente comando:

    dfu-util -a kernel -R -D uImage-2.6.29-oe11+gitr119844+a3587e4ed77974adfb057af261aaeea4022018e8-r3.5-om-gta02.bin

    Este proceso demorará mucho menos que el anterior y cuando finalice podremos

    7. Seleccionar la opción para arrancar y presionar POWER: Al hacer esto, veremos cómo bootea en nuestro OpenMoko la distribución SHR que acabamos de instalar.

    Como pueden ver es sencillo el proceso de flashear el OpenMoko y es aún más sencillo cuando la distribución se instala en la memoria microSD, proceso que trataré de explicar en un nuevo post.

    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!!!!!!!!!!!!!