SELinux-Richtlinien für Gerätetests

Wenn atest Gerätetests ausführt, überträgt atest die Testbinärdatei und ihre Ressourcen auf die /data-Partition und führt sie mit adb shell aus. Das Test-Executable verwendet die SELinux-Domain shell. Daher werden die SELinux-Richtlinien abgerufen, die der Domain shell zugeordnet sind. Wenn das Gerät im erzwungenen SELinux-Modus ausgeführt wird, schlagen Gerätetests, die gegen diese Richtlinien verstoßen, mit einem SELinux-Fehler fehl.

Die Domain shell hat keine allow-Regeln für Folgendes:

  • Auf Dateien auf der Partition /vendor zugreifen, einschließlich der Verknüpfung mit Bibliotheken, die auf der Partition /vendor installiert sind.

  • Eine beliebige Binder-Schnittstelle aufrufen

Wenn für einen Gerätetest eine oder beide dieser Berechtigungen erforderlich sind, müssen Sie den Test mit root-Berechtigungen ausführen. Wenn adbd Root-Berechtigungen hat, verwendet adbd die SELinux-Domain su auf dem Gerät anstelle von shell, die mehr Berechtigungen hat.

Wenn Sie einen Gerätetest mit Root-Berechtigungen ausführen möchten, fügen Sie der entsprechenden Soong-Moduldefinition in der Datei Android.bp das Attribut require_root: true hinzu.

// file: Android.bp

rust_test {
    name: "example_rust_test_that requires root",

    // ...

    rustlibs: [
        "some-vendor-lib",
    ],
    // This example test requires root permissions, because it calls Binder
    // interfaces unavailable for the shell, and also links with a vendor
    // library.
    require_root: true,
}