짱구삼촌
13.04.13
조회 수 3729
추천 수 7
댓글 4
#!/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퍼미션에 시스템폴더에서 루익으로 실행하시면 됩니다.
Extra Form
첨부
fixpermission.sh  [File Size:3.4KB/Download:41]
댓글을 남겨야 다운로드가 가능합니다. 감사의 댓글을 달고 오른쪽 확인버튼을 눌러주세요.
다운로드시 일주일에 한개 이상의 게시물 작성이 필요합니다. 지금 자유게시판에 회원님의 하루를 남겨보세요.
추천♡버튼을 잊지 마세요. 추천인과 회원님 모두 포인트가 적립됩니다.

짱구삼촌 님의 SIGNATURE

profile

그래도 아직은 사랑이, 낡은 외투처럼 너덜너덜해져서 이제는 갖다 버려야 할, 그러나 버리지 못하고...

"신은 그저 질문하는 자일 뿐... 운명은 내가 던지는 질문이다. 답은 그대들이 찾아라."

댓글 4
댓글 쓰기 권한이 없습니다.
정렬 목록 검색 쓰기
등록된 글이 없습니다.
1 - 2