前言:
在Java层和native守护进程socket通信 一文中,新建了一个名为myguard的socket。然后修改了5个权限相关的文件,
1,在device/qcom/sepolicy/common/ 路径下添加myguard.te文件,内容如下,
#myguard
allow myguard_socket myguard_socket:sock_file create_file_perms;
type_transition myguard_socket socket_device:sock_file myguard_socket;
2,在device/qcom/sepolicy/common/的file_contexts文件中添加
/dev/socket/myguard u:object_r:myguard_socket:s0
3,在device/qcom/sepolicy/common/file.te中添加
type myguard_socket, file_type;
4,在device/qcom/sepolicy/common/system_app.te 中添加
allow system_app myguard_socket:sock_file rw_file_perms;
5,在device/qcom/sepolicy/common/system_server.te中添加
allow system_server myguard_socket:sock_file rw_file_perms;
编译刷入版本开机启动之后,在dev/ socket路径下出现myguard
2个进程读写一个socket为什么非要搞得这么艰难?这是为啥呢?
还不是SEAndroid安全机制!
在引进SEAndroid安全机制之前,Android系统的安全机制分为应用程序和内核两个级别。
应用程序级别的安全机制就是通常说的Permission机制。一个应用如果需要访问一些系统敏感或者特权资源,
那么就必须要在AndroidManifest.xml配置文件中进行申请,并且在安装的时候由用户决定是否赋予相应的权限(android 5.0),
或者在apk运行的时候由用户决定是否赋予相应的权限(android 6.0)。
内核级别的安全机制就是传统的Linux UID/GID机制。在Linux中,每一个用户都拥有一个用户ID,并且也有一个用户组ID,
分别简称为UID和GID。此外,Linux系统的进程和文件也有UID和GID的概念。Linux就是通过用户、进程、
文件的UID/GID属性来进行权限管理的。文件的权限控