2015年1月12日月曜日

Android 4.4(Kitkat)でのフラッシュメモリ読込・書込権限について(調査中)

先日Colorfly e708 3G Proという中華タブレットを購入しました。
中華タブレットは以前に購入したPIPO S1という機種を使用しておりましたが(一応今でも所有はしているが)、Google Playでアプリのアップデートをするだけで処理が固まる現象に悩まされていました(購入直後は画面描画がフリーズして暴走する現象に悩まされた)。

ま、本題に戻してこのタブレットの問題(本題)に入ります。
中華タブレットは内蔵フラッシュが8GBくらいあるうち、本体メモリ(/data)が1GB程度しか確保されていないものが多く、常用するためには本体メモリを増やす(今時2GBは必要でしょう)かLink2SDを使用してSDカードの第2パテーションを/dataの増量に使う必要があります。

しかしながらこのタブレット、rootの場合は内部・外部SDへの読込権限がない。というか、正確には当該ディレクトリへのアクセスは可能なのだが内部・外部SDのファイルが全くない表示になってしまう。

具体的にはadb shellで接続した場合の各ディレクトリのユーザ・グループ・パーミッションは以下の通り。


  • adb shell接続時(ユーザID2000)の各ディレクトリ情報とアクセス

shell@E708 3G Pro:/ $ ls -l /mnt
drwxr-xr-x root system 2015-01-12 20:57 asec
dr-xr-xr-x root root 2012-03-12 16:30 cd-rom
drwx------ media_rw media_rw 2015-01-12 20:57 media_rw
drwxr-xr-x root system 2015-01-12 20:57 obb
lrwxrwxrwx root root 2015-01-12 20:57 sdcard > /storage/sdcard0
lrwxrwxrwx root root 2015-01-12 20:57 sdcard2 > /storage/sdcard1
drwx------ root root 2015-01-12 20:57 secure
※ここでsdcardは内部フラッシュ、sdcard2は外部SDカードを示す。

1|shell@E708 3G Pro:/ $ ls -l /storage
drwxrwx--x root sdcard_r 1970-01-01 09:00 sdcard0
drwxrwx--x root sdcard_r 1970-01-01 09:00 sdcard1
drwx------ root root 2015-01-12 20:57 usbotg

cd /mnt/sdcard 後にlsでファイル閲覧は可能
cd /mnt/sdcard2 後にlsでファイル閲覧は可能

  • suでrootになったあとの各ディレクトリ情報とアクセス

root@E708 3G Pro:/mnt # ls -l
drwxr-xr-x root system 2015-01-12 20:57 asec
dr-xr-xr-x root root 2012-03-12 16:30 cd-rom
drwx------ media_rw media_rw 2015-01-12 20:57 media_rw
drwxr-xr-x root system 2015-01-12 20:57 obb
lrwxrwxrwx root root 2015-01-12 20:57 sdcard > /storage/sdcard0
lrwxrwxrwx root root 2015-01-12 20:57 sdcard2 > /storage/sdcard1
drwx------ root root 2015-01-12 20:57 secure

root@E708 3G Pro:/mnt # ls -l
drwx------ root root 2015-01-12 20:57 sdcard0
drwx------ root root 2015-01-12 20:57 sdcard1
drwx------ root root 2015-01-12 20:57 usbotg

cd /mnt/sdcard 後にlsでファイル閲覧不可
cd /mnt/sdcard2 後にlsでファイル閲覧不可

rootexplorerでアクセスした場合、/mnt/sdcardや/mnt/sdcard2に直接アクセスした場合はOKなのですが、一旦root権限を取ったあとでは上記のディレクトリを開いてもファイル閲覧できなくなります。

ごらんの通り、一般ユーザの場合は内・外部SDカードはsdcard_rというグループですが、rootの場合はrootのグループに変更されています。

Kitkatでは一般ユーザではSDカードに書込する権限がないという問題に関して、AndroPlusのこちらの通り/system/etc/permissions/platform.xmlWRITE_EXTERNAL_STORAGE<group gid="media_rw" />を追加する方法を見習って<group gid="root" />を追加してみましたがそれでもダメなようです。

あと中華タブレットはストックカーネルではバッテリ消費のチューニングが足りないようですが、SONY Mobileのようにカーネルソースコードを公開してくれないので、手を入れるのはかなり困難っぽいですね。

0 件のコメント:

コメントを投稿