2015-09-03 35 views
5

Ho un'app per Android con un codice C che utilizza la chiamata di sistema di collegamento (2) per creare un collegamento reale a un file esistente. Quando eseguo l'app su Android 5.0.2, questa parte dell'app funziona. Quando eseguo la stessa identica app su un dispositivo Android-M, la chiamata di sistema link() restituisce -1 "autorizzazione negata".Android M non consente collegamenti rigidi?

ho notato nel mio ceppo di ricevere messaggi come questo: sembra

09-02 17:10:34.222 5291 5291 W ona.crackerjack: type=1400 audit(0.0:59): avc: denied { link } for name="fixed28" dev="mmcblk0p28" ino=82829 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=lnk_file permissive=0 

Questo messaggio vicina messaggio di log del mio app che puntano() ha restituito -1 "permesso negato", a volte anche prima, a volte dopo.

La creazione di un collegamento fisico è considerata non protetta? Noto "scontext = u: r: untrusted_app". C'è un modo per rendere l'app affidabile e, in tal caso, consentirebbe il funzionamento della chiamata di sistema link()?

risposta

6

Apparentemente ci sono nuove regole SELinux, che vietano di creare collegamenti fisici (o magari accedere alla cartella o al file).

Gli utenti normali non possono modificare le regole di SELinux e anche con i permessi di root questo non è semplice.

Maggiori info su SELinux: https://source.android.com/devices/tech/security/selinux/

Problemi correlati