私はAndroid用のroot-appの開発者です。
悲しいことに、一部のデバイス/ ROMにはSELinux inenforce-modeがあり、アプリの一部のアクションを妨げています。
これはルートアプリであるため、ユーザーはルートアクセスを許可しています。
現在、SELinuxが私のアクションの一部をブロックしているため、これに対する解決策を見つける必要があります。
SELinuxを一時的に無効にしようとしました
setenforce permissive -> no failure, but getenforce still returns "Enforcing"
cat 0 > /sys/fs/selinux/enforce -> no failure, but getenforce still returns "Enforcing"
実行時にsepolicy-fileを編集してブロックされたコマンドを許可し、そのリロードをトリガーするというアイデアで遊んでいますが、これが機能するかどうか、どのように機能するかはわかりません良いアイデア。
誰か他のヒントやリソースがありますか?
SuperSUアプリから supolicy
を使用できます。いつ、どのように呼び出されるかの詳細な説明については、リンクを参照してください。
要するに:
dmesg | grep "audit"
allow ...
ブロックされた操作を許可するルール。 SELinux * .teファイルの「許可」ルールに似ています(同一?)。supolicy --live "allow ..."
ルートシェルで、操作が成功するかどうかを確認します。そうでない場合は、「許可」ルールを拡張します。 1つのsupolicy
呼び出しで複数の「許可」ルールを指定できます。supolicy
は高価な操作なので、必ず1回だけ呼び出してください。
ChainfireのSuperSUに依存したくない場合は、 sepolicy-inject
。私はそれを自分でテストしませんでした。
編集build.prop
最初のディレクトリのシステムフォルダにあるファイル。テキストエディタ検索「selinux」を使用します。
enable_selinux = 1のようなものが表示された場合、0に変更します。再起動または起動後に適用されます。
私の場合、彼らはすでにそれを無効にしましたが、それはコメント行にありました
#ro.boot.selinux = disable
#で始まる行はコメントであり、何も変更しません。同様に、マルチユーザーアカウント、システムアップデートのオン/オフを切り替えることができます。
デバイスの製造元がシステムアップデートを無効にしました。
私はAndroid 4.3でSELinuxを無効にしてみましたが、これは私が思いついたものです。
Samsung S4の場合Android 4.3、setenforce 0
はPermissive
モードに変わります。
Samsung Note 3の場合Android 4.3、setenforce 0
はSELinuxステータスを変更しません。
Nexus 4 Android 4.3を試しましたが、デフォルトではPermissive
モードです
アプリ名selinux mode changerをダウンロードできます。 Playストアにはないので、chromeまたは他の任意のブラウザからダウンロードしてください。アプリはルート権限が必要なので、試してみてください。
ルートアクセスがある場合は、su 0 setenforce 0
を実行してPermissive
モードに変更します。
// Set SELinux to permissive
private static final String COMMAND = "su 0 setenforce 0";
try {
Runtime.getRuntime().exec(COMMAND);
} catch (IOException e) {
e.printStackTrace();
}