2016-02-08 2 views
1

Je souhaite exécuter la commande ps pour trouver le nombre de processus en cours d'exécution dans le système. Cependant, je reçois violation SELinux dans MStratégie SELinux pour l'exécution de la commande "ps" à partir de l'application

private int read_procs() { 
    int nProcs = 0; 
    String line = null; 

    // "ps" output 
    try { 
     Process p = Runtime.getRuntime().exec("ps"); 
     BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 
     if (in == null) { 
      mLog.e("cmd output _in_ is null"); 
      return 1; 
     } 

     while ((line = in.readLine()) != null) { 
      nProcs++; 
     } 
     in.close(); 
     mLog.i("Processes :" + (nProcs-1)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return nProcs; 
} 

comment définir la politique pour permettre l'accès de commande "ps":

avc: denied { getattr } for path="/proc/2" dev="proc" ino=9461 scontext=u:r:system_app:s0 tcontext=u:r:kernel:s0 tclass=dir  permissive=0 ppid=3853 pcomm="Thread-52" tgid=3761 tgcomm="test:app" 

Merci

Répondre

2

Je l'ai résolu en ajoutant une règle comme ci-dessous

allow [source context] [target context object]:[type] [permission needed]; 

allow system_app kernel:dir getattr; 

-