web-dev-qa-db-ja.com

Android / linuxはsetuidフラグを無視します

中国のx86タブレットへのrootアクセスを取得しようとしています。 adbで私はルートを持っています。 「sh」バイナリをコピーしてsetuidビットを設定すると、adbから期待どおりに機能します。

1|Shell@x98air3g_c5j8:/ $ which su.sh
/system/xbin/su.sh
Shell@x98air3g_c5j8:/ $ ls -al /system/xbin/su.sh
-rwsr-sr-x root     Shell      395004 2016-01-02 17:39 su.sh
Shell@x98air3g_c5j8:/ $ mount | grep system
/dev/block/by-name/system /system ext4      ro,seclabel,noatime,data=ordered 0 0
Shell@x98air3g_c5j8:/ $ su.sh
# 

ただし、同じバイナリがタブレット自体を介して(ターミナルエミュレータで)呼び出されると、root権限は保持されません(setuidビットは無視されているようです)。通常のシェルです。

Setuidビットが機能するのを妨げているのは何ですか? 「nosuid」マウントフラグはなく、「setenforcepermissive」でselinuxを無効にしようとしました。

3
Miha

/ systemパーティションは「nosuid」オプションでマウントされ、Androidアプリケーションがsetuidプログラムを実行できないようにします。suidオプションを使用して、一時的にマウント解除して再度マウントできます。

adb Shell mount -o rw,remount /system
2
Johan Van Barel

http://www.androidauthority.com/Android-4-3-new-security-features-253244/

/ systemパーティションは、接合子によって生成されたプロセスのnosuidにマウントされ、Androidアプリケーションがsetuidプログラムを実行できないようにします。

0
osexp2003