新书上市《深入解析Android 5.0系统》
以下内容节选自本书
SEAndroid是Security Enhancementsfor Android(安全增强型Android)的缩写,这是一个把SELinux移植到Android中的项目,目前Android上的SELinux和标准Linux中的SELinux还有一些区别。如果希望了解这个项目的更多细节,可以访问网站http://selinuxproject.org/page/SEAndroid。
SEAndroid的实现分成两大部分:
1) 内核中的SELinux安全模块,位于目录kernel/security/selinux下。这个模块是SELinux运行的核心,执行各种策略的检查工作,前面已经介绍过了。
2) 用户态工具,用来产生SELinux的策略文件。位于目录external/sepolicy下。这个目录中包括了系统中所有安全规程的定义文件。另外在external/libselinux目录下存放了libselinux库的源码,这个库文件提供了一些函数,用来帮助用户进程使用SELinux的功能。
在设备的根目录下有几个和SELinux相关的文件:
q file_contexts:这个文件中保存的是系统中所有文件的安全上下文。
q property_contexts:这个文件保存的是系统中所有属性的安全上下文。
q seapp_contexts:定义了用户,seinfo和域之间的关联,用于确定用户进程的安全上下文。
q sepolicy:这是一个二进制文件,保存的是系统策略,系统初始化时会把它设置到内核中。
在/sys/fs/selinux目录下,有一个虚拟的SELinux的文件系统,这个目录下的文件是SELinux的内核和应用进行通信的接口。例如初始化内核需要的策略文件就是通过向load文件中写入策略数据完成的。/sys/fs/selinux目录的内容如下:
root@generic:/sys/fs/selinux # ls-l
-rw-rw-rw-root root 0 1969-12-31 19:00 access
dr-xr-xr-xroot root 1969-12-31 19:00 avc
dr-xr-xr-xroot root 1969-12-31 19:00 booleans
-rw-r--r--root root 0 1969-12-31 19:00 checkreqprot
dr-xr-xr-xroot root 1969-12-31 19:00 class
--w-------root root 0 1969-12-31 19:00 commit_pending_bools
-rw-rw-rw-root root 0 1969-12-31 19:00 context
-rw-rw-rw-root root 0 1969-12-31 19:00 create
-r--r--r--root root 0 1969-12-31 19:00 deny_unknown
--w-------root root 0 1969-12-31 19:00 disable
-rw-r--r--system system 0 1969-12-31 19:00 enforce
dr-xr-xr-xroot root 1969-12-31 19:00 initial_contexts
-rw-------system system 0 1969-12-31 19:00 load
-rw-rw-rw-root root 0 1969-12-31 19:00 member
-r--r--r--root root 0 1969-12-31 19:00 mls
crw-rw-rw-root root 1, 31969-12-31 19:00 null
-r--------root root 0 1969-12-31 19:00 policy
dr-xr-xr-xroot root 1969-12-31 19:00 policy_capabilities
-r--r--r--root root 0 1969-12-31 19:00 policyvers
-r--r--r--root root 0 1969-12-31 19:00 reject_unknown
-rw-rw-rw-root root 0 1969-12-31 19:00 relabel
-r--r--r--root root 0 1969-12-31 19:00 status
-rw-rw-rw-root root 0 1969-12-31 19:00 user