2 votos

adb permission denied to push files to subdirectry

¿Por qué me denegarían el permiso usando adb para copiar un directorio a un subdirectorio en mi teléfono, cuando podría copiar a su directorio padre y ambos tienen el mismo permiso?

He probado esto desde mi PC a mi Nexus 5 corriendo 6.0.1 (Oct 5):

adb push Dir /sdcard/Dir/Subdir

Falló con

Permission denied

Esto ha funcionado antes, sin cambios que yo sepa.

Lancé adb shell y ejecuté

ls -l

para obtener permisos para /sdcard (storage/emulated/0), /sdcard/Dir y /sdcard/Dir/Subdir:

drwxrwx--x root sdcard_rw

Yo entonces:

cd /sdcard/Dir/Subdir
mkdir XYZ

Tengo

mdkdir: XYZ: Permission Denied

Probado:

su
mkdir XYZ

De nuevo, permiso denegado

Entonces intenté otro empujón

adb push XYZ /sdcard/Dir

Esto funcionó y copió todos los archivos.

¿Por qué funcionaría en /sdcard/Dir y no en /sdcard/Dir/Subdir, cuando ambos tienen los mismos permisos? ¿Por qué se denegaría el permiso para Root?

1 votos

¿Creó ese subdirectorio al navegar en /data/media/0/Dir/? En cualquier caso, facilítenos la salida de su -c 'ls -l /data/media/0/Dir/Subdir' y comparar los permisos con el resto de los subdirectorios allí.

0 votos

@Firelord No he creado la subdirección cuando se navega allí. Todo el árbol de directorios (/sdcard/Dir) fue creado por un push de adb. Los permisos para Dir son dwrxrwxr-x media_rw media_rw, mientras que Subdir son dwrxrwxr-x Root Root. Cuando uso ls -l en storage/emulated/0, obtengo dwrxrwx--x Root sdcard_rw en Dir?

1 votos

¿Podrías cambiar el permiso de /data/media/0/Dir/Subdir a rwxrwxrwx, o alternativamente, cambiar el grupo de usuarios de Root a media_rw? Asegúrese de ejecutar las operaciones en la ruta /data/media/0/.. y no en /storage/emulated/..

1voto

Firelord Puntos 161

Como aparece en este comentario En este caso, los permisos de archivo y el control de acceso a SubDir difieren de lo que idealmente debería ser.

El problema:

# ls -l on /data/media/0/Dir
dwrxrwxr-x root root

El grupo de usuarios debería haber sido media_rw en lugar de root .

La solución es cambiar al grupo apropiado o hacer que el directorio pueda ser escrito por otros.

chmod 777 /data/media/0/Dir/SubDir       # making SubDir writable by others
chgrp media\_rw /data/media/0/Dir/SubDir  # Alternatively, changing group from root to media\_rw

Nota: puede que necesites instalar Busybox o Toybox para tener y usar chmod y/o chgrp.

0voto

Aaron Puntos 445

Hay un problema similar en adb push ... Permiso denegado donde terminé empujando el archivo a /sdcard/ y luego utilizó adb shell para luego copiar el archivo al subdirectorio en el que necesitaba que estuviera.

Para completar:

Supongamos que tengo un archivo de expansión test.obb que quiero instalar en un dispositivo Android físico local, y mi nombre de paquete de la aplicación es app.example.test .

Empujé el archivo usando adb push Por ejemplo adb push test.obb /sdcard/

adb shell

cd /sdcard/Android/obb/app.example.test/
cp /sdcard/test.obb .
ls -la

Ahora puedo ver que el archivo obb está en la carpeta en la que tiene que estar.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X