Android

ICSで/data/local/tmp利用してrooted系のソース

Amazonのアソシエイトとして、8796.jp管理日誌は適格販売により収入を得ています。

なんか最近 ICS にアップデートされた端末で /data/local/tmp になんか symlink してアレする手法が多いよね?ってことで調査してみたよ。

ソース見ながら憶測で書いてるから的外れだったらごめんね!

 

やっちまったのは多分2011/7/8のこれ。

init: make “mkdir”; work even when the directory already exists. ·  27164dc · android/platform_system_core · GitHub

起動時に読み込まれる init.rc って設定ファイルを実行する init ってヤツなんですが。

失敗したらエラー返すだけだったのを、ディレクトリが存在したら chmod するように変更されてますね?そして chmod に成功したら chown まで行っちゃいますね?

これがあかん。

adb shell で入ったら uid=2000(shell) gid=2000(shell) でして。

なので、init.rc で

    mkdir /data/local 0771 shell shell
    mkdir /data/local/tmp 0771 shell shell

とか shell で書けるようにしてくれてるディレクトリに symlink しちゃえばあら不思議。

起動時に勝手に権限書き換えてくれるのでした!!!

みたいな。

 

で流石に、これあかんやつやって気づいたみたいで10ヶ月ほど経って2012/5/2に

init: make chmod/mkdir/chown not follow symlinks ·  42a9349 · android/platform_system_core · GitHub

「いやいや symlink あかんやろw」って修正されてます。

 

なので、今後出てくるやつではこの穴は使えなくなるんじゃないかしら?たぶん。

コメント

  1. […] さて、これと tmp 芸をあわせて次行こう […]

  2. […] 最も重要なのは先日ソースをみかけた init のマヌケ穴です。/data/local/tmp を別のディレクトリにリンクしておけば起動時に勝手に書き込み権限を設定してくれるというマヌケ穴。 […]

  3. goroh_kun より:

    そもそもこの問題は、端末のアップデート時に既にファイルが存在している場合にパーミッションが変更でいないのが問題だよね、ということで報告されて
    導入されたパッチなんですよね・・。

    http://code.google.com/p/android/issues/detail?id=4519

    参考までに

  4. 8796.jp管理人 より:

    なるほど。
    問題を解決したつもりが新たな問題を生み出してしまったってことですか。

タイトルとURLをコピーしました