Sam*_*Sam 5 security hardlink android-6.0-marshmallow
我有一个带有一些C代码的Android应用程序,它使用link(2)系统调用来创建指向现有文件的硬链接.当我在Android 5.0.2上执行应用程序时,应用程序的这一部分可以运行.当我在Android-M设备上执行完全相同的应用程序时,link()系统调用返回-1"权限被拒绝".
我在日志中注意到这样的消息:
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
Run Code Online (Sandbox Code Playgroud)
此消息显示在我的应用程序的日志消息附近,即link()返回-1"权限被拒绝",有时更早,有时更晚.
创建一个被认为不安全的硬链接?我注意到"scontext = u:r:untrusted_app".有没有办法使应用程序受信任,如果是这样,是否会让link()系统调用工作?
显然有新的SELinux规则,禁止制作硬链接(或者可能访问文件夹或文件).
普通用户不能改变SELinux规则,即使使用root权限,这也不是直截了当的.
有关SELinux的更多信息:https://source.android.com/devices/tech/security/selinux/
看起来这是“设计使然”。
在https://code.google.com/p/android-developer-preview/issues/detail?id=3150上,该项目的一名成员解释说:
硬链接文件被阻止,尝试在文件上调用link()将返回EACCES。