J'ai une application Android qui va créer un fichier dans /data/
et le supprimer immédiatement. Je veux savoir comment je peux attraper ce fichier ou en faire une copie ou même désactiver les permissions de l'utilisateur pour supprimer un fichier? J'ai un accès root à l'appareil.
Réponse
Trop de publicités?Vous pouvez y parvenir en utilisant busybox inotifyd
. Votre noyau doit être compilé avec CONFIG_INOTIFY_USER=y
pour que cela fonctionne. Vous pouvez confirmer avec :
~# zcat /proc/config.gz | grep INOTIFY
Ou l'existence du répertoire /proc/sys/fs/inotify
. /proc/config.gz
peut ne pas exister sur tous les appareils en fonction de la configuration de la compilation du noyau.
Disons que le répertoire /data/data/com.xyz/files/
est le répertoire que vous souhaitez surveiller. Écrivez un script à exécuter lorsque qu'un fichier ou un répertoire est créé dans le répertoire donné:
#!/system/bin/sh
# Supprimer le premier argument: EVENT
shift
# Créer un répertoire pour sauvegarder les fichiers
mkdir -p /sdcard/backup/
# Copier le fichier/répertoire nouvellement créé
[ -e "$1/$2" ] || exit
cp -av "$1/$2" /sdcard/backup/
Placez le script dans /data/local/tmp/copy_it.sh
et chmod a+x
. Maintenant exécutez :
~# inotifyd /data/local/tmp/copy_it.sh /data/data/com.xyz/files:n
Notez le :n
à la fin de la ligne, qui est l'événement qui signale qu'un fichier/répertoire est créé dans le répertoire surveillé. Cependant, les surveillances ne sont pas établies de manière récursive.
Pour des opérations plus complexes, utilisez inotifywait
de inotify-tools comme expliqué ici.