一:SELinux基本概念
SELinux介绍: 点击打开链接
SELinux Android介绍:点击打开链接
SElinux Android介绍二: 点击打开链接
SELinux的全称是Security Enhanced Linux。
DAC:(Discretionary Access Control),自主访问控制,依据进程的所有者与文件资源的rwx权限来决定有无访问的能力。
DAC的缺点:如果某个具有root权限的程序被其他人获取,那么该程序可以访问系统上的任何资源,如果某个文件的权限不小心变为777,那么系统上任何进程都可以访问该文件。
MAC:(Mandatory Access Control)强制访问控制,可以针对特定进程和特定文件资源进程权限管控,也就是可以控制一个进程可以访问哪些文件,一个文件可以被哪些进程访问,这样即使root用户也不一定能访问所有的文件了。
SELinux 是透过 MAC 的方式来控管程序
2,android平台SELinux的利用
1,ALLow: allow
2,Domain: appdomain
3,Context: app_data_file:file rw_file_perms
這個Policy Rule用來表示, 屬於Domain Appdomain的應用程式,被允許可以讀寫有被標籤屬於 "app_data_file" 的應用程式檔案.在編譯過程後,這就會成為SELinux Policy新增的一部分.
举例:
allow shell input_device:dir r_dir_perms
以上input_device代表的含义是在
external/sepolcy/file_context里定义,r_dir_perms代表的含义是在external/sepolicy/access_vectors, external/sepolicy/security_classes 與 Linux Kernel security/selinux/include/classmap.h里定义的。
透過 ls –Z,則可以查核每個檔案物件配置的Security屬性,同樣的根據File Type,Security與路徑簡要分類如下
3.*.te文件格式
▪控制语句格式
–
rule_name
source_type
target_type
: class
perm_set
▪rule: 控制类型,分成两方面 allow 以dontaudit auditallow neverallow
▪source_type:也叫subject,通常是domain。
▪Target_type: 代表请求的资源的类型
▪classperm_set: 代表对资源访问的操作
4,SELinux Tools
SElinux filesystem在用户空间接口是/sys/fs/selinux