#!/system/bin/sh
: '
Sets permissions for Android data directories and apks
============ Copyright (C) 2010 Jared Rummler (JRummy16) ============
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
=====================================================================
'
START=` busybox date +%s `
PKGLINES=`LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/system/lib pm list packages -f | busybox cut -d ':' -f2 `
TOTAL=` echo $PKGLINES | busybox wc -w `
CURRENT=0
echo
echo "Fixing permissions..."
echo
busybox mount -o remount,rw /system
for pkgline in ${PKGLINES}; do
PKGNAME=` echo $pkgline | busybox cut -d '=' -f2 `
CODEPATH=` echo $pkgline | busybox cut -d '=' -f1 `
DATAPATH=/data/data/$PKGNAME
PKGUID=` busybox grep $CODEPATH /data/system/packages.xml |
busybox sed 's%.*serId="(.*)".*%1%' |
busybox cut -d '"' -f1 `
CURRENT=$(($CURRENT+1))
echo "(${CURRENT} of ${TOTAL}) ${PKGNAME}..."
if busybox [ -e $CODEPATH ]; then
APPDIR=` busybox dirname $CODEPATH `
if busybox [ $APPDIR = /system/app ]; then
busybox chown 0 $CODEPATH
busybox chown :0 $CODEPATH
busybox chmod 644 $CODEPATH
elif busybox [ $APPDIR = /data/app ]; then
busybox chown 1000 $CODEPATH
busybox chown :1000 $CODEPATH
busybox chmod 644 $CODEPATH
elif busybox [ $APPDIR = /data/app-private ]; then
busybox chown 1000 $CODEPATH
busybox chown :$PKGUID $CODEPATH
busybox chmod 640 $CODEPATH
fi
if busybox [ -d $DATAPATH ]; then
busybox chmod 755 $DATAPATH
busybox chown $PKGUID $DATAPATH
busybox chown :$PKGUID $DATAPATH
DIRS=` busybox find $DATAPATH -mindepth 1 -type d `
for file in $DIRS; do
PERM=755
NEWUID=$PKGUID
NEWGID=$PKGUID
FNAME=` busybox basename $file `
case $FNAME in
lib)
busybox chmod 755 $file
NEWUID=1000
NEWGID=1000
PERM=755
;;
shared_prefs)
busybox chmod 771 $file
PERM=660
;;
databases)
busybox chmod 771 $file
PERM=660
;;
cache)
busybox chmod 771 $file
PERM=600
;;
*)
busybox chmod 771 $file
PERM=771
;;
esac
busybox chown $NEWUID $file
busybox chown :$NEWGID $file
busybox find $file -type f -maxdepth 1 ! -perm $PERM -exec busybox chmod $PERM {} ';'
busybox find $file -type f -maxdepth 1 ! -user $NEWUID -exec busybox chown $NEWUID {} ';'
busybox find $file -type f -maxdepth 1 ! -group $NEWGID -exec busybox chown :$NEWGID {} ';'
done
fi
fi
done
busybox mount -o remount,ro /system
sync
STOP=` busybox date +%s `
RUNTIME=` busybox expr $STOP - $START`
HOURS=` busybox expr $RUNTIME / 3600`
REMAINDER=` busybox expr $RUNTIME % 3600`
MINS=` busybox expr $REMAINDER / 60`
SECS=` busybox expr $REMAINDER % 60`
RUNTIME=`busybox printf "%02d:%02d:%02dn" "$HOURS" "$MINS" "$SECS"`
echo
echo
echo "Fix permissions complete! Runtime: ${RUNTIME}"
echo
data 어플 퍼미션을 잡아주는 스크립트입니다.
어플이 꼬이지 않으면 잘 쓸 일은 없겠네요.
마찬가지로 777퍼미션에 시스템폴더에서 루익으로 실행하시면 됩니다.
: '
Sets permissions for Android data directories and apks
============ Copyright (C) 2010 Jared Rummler (JRummy16) ============
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see
=====================================================================
'
START=` busybox date +%s `
PKGLINES=`LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/system/lib pm list packages -f | busybox cut -d ':' -f2 `
TOTAL=` echo $PKGLINES | busybox wc -w `
CURRENT=0
echo
echo "Fixing permissions..."
echo
busybox mount -o remount,rw /system
for pkgline in ${PKGLINES}; do
PKGNAME=` echo $pkgline | busybox cut -d '=' -f2 `
CODEPATH=` echo $pkgline | busybox cut -d '=' -f1 `
DATAPATH=/data/data/$PKGNAME
PKGUID=` busybox grep $CODEPATH /data/system/packages.xml |
busybox sed 's%.*serId="(.*)".*%1%' |
busybox cut -d '"' -f1 `
CURRENT=$(($CURRENT+1))
echo "(${CURRENT} of ${TOTAL}) ${PKGNAME}..."
if busybox [ -e $CODEPATH ]; then
APPDIR=` busybox dirname $CODEPATH `
if busybox [ $APPDIR = /system/app ]; then
busybox chown 0 $CODEPATH
busybox chown :0 $CODEPATH
busybox chmod 644 $CODEPATH
elif busybox [ $APPDIR = /data/app ]; then
busybox chown 1000 $CODEPATH
busybox chown :1000 $CODEPATH
busybox chmod 644 $CODEPATH
elif busybox [ $APPDIR = /data/app-private ]; then
busybox chown 1000 $CODEPATH
busybox chown :$PKGUID $CODEPATH
busybox chmod 640 $CODEPATH
fi
if busybox [ -d $DATAPATH ]; then
busybox chmod 755 $DATAPATH
busybox chown $PKGUID $DATAPATH
busybox chown :$PKGUID $DATAPATH
DIRS=` busybox find $DATAPATH -mindepth 1 -type d `
for file in $DIRS; do
PERM=755
NEWUID=$PKGUID
NEWGID=$PKGUID
FNAME=` busybox basename $file `
case $FNAME in
lib)
busybox chmod 755 $file
NEWUID=1000
NEWGID=1000
PERM=755
;;
shared_prefs)
busybox chmod 771 $file
PERM=660
;;
databases)
busybox chmod 771 $file
PERM=660
;;
cache)
busybox chmod 771 $file
PERM=600
;;
*)
busybox chmod 771 $file
PERM=771
;;
esac
busybox chown $NEWUID $file
busybox chown :$NEWGID $file
busybox find $file -type f -maxdepth 1 ! -perm $PERM -exec busybox chmod $PERM {} ';'
busybox find $file -type f -maxdepth 1 ! -user $NEWUID -exec busybox chown $NEWUID {} ';'
busybox find $file -type f -maxdepth 1 ! -group $NEWGID -exec busybox chown :$NEWGID {} ';'
done
fi
fi
done
busybox mount -o remount,ro /system
sync
STOP=` busybox date +%s `
RUNTIME=` busybox expr $STOP - $START`
HOURS=` busybox expr $RUNTIME / 3600`
REMAINDER=` busybox expr $RUNTIME % 3600`
MINS=` busybox expr $REMAINDER / 60`
SECS=` busybox expr $REMAINDER % 60`
RUNTIME=`busybox printf "%02d:%02d:%02dn" "$HOURS" "$MINS" "$SECS"`
echo
echo
echo "Fix permissions complete! Runtime: ${RUNTIME}"
echo
data 어플 퍼미션을 잡아주는 스크립트입니다.
어플이 꼬이지 않으면 잘 쓸 일은 없겠네요.
마찬가지로 777퍼미션에 시스템폴더에서 루익으로 실행하시면 됩니다.