Android 安全机制
1. Linux基础
Android本身是构建于Linux操作系统之上,以此为基础做了很多修改。谈到Android的安全机制,就不能绕开Linux的安全机制,这里先介绍一下Android中修改过的几个Linux常用命令
1.1 ps
ps 是Linux中常见的命令,用来查看进程信息,Android中重写了这个命令,源码位于 system/core/toolbox/ps.c.
这里简单介绍下ps(Android版)的用法:
ps 可以查看所有正在运行的进程
-t 显示进程下的线程列表
-x 显示进程耗费的用户时间和系统时间,格式:(u:0, s:0),单位:秒(s)
-P 显示调度策略,通常是bg或fg,当获取失败将会是un和er
-p 显示进程的优先级和nice等级
-c 显示进程耗费的CPU时间 (可能不兼容Android 4.0以前的老版本系统)
[pid] 过滤指定的进程PID
[name] 过滤指定的进程NAME
ps 命令的执行结果字段:
USER PID PPID VSIZE RSS WCHAN PC NAME
USER: 用户名
PID: 进程号
PPID: 父进程号
VSIZE : virtual size,进程虚拟地址空间大小,单位为KB
RSS : 进程正在使用的物理内存的大小;单位为KB
WCHAN :进程如果处于休眠状态的话,在内核中的地址;
PC : program counter,
NAME: process name,进程的名称
1.2 ls
列出文件详细信息,Android中重写了这个命令,源码位于 system/core/toolbox/ls.c.
这里简单介绍下ls(Android版)
ls 查看文件,只显示文件名信息
ls filename 显示指定文件名称
-l 显示文件详细信息。包括,存取权限,用户名,组名,文件大小,最近一次修改时间,文件链接。
-n 用户名和组名 以对应id显示。
-s 显示文件占用的块数,以KB为单位
-d 列出目录??没有列出目录中的文件
-R 循环列出目录中的所有文件及子目录中的文件
-Z 显示文件详细信息。包括,存取权限,用户名,组名, maclabel ,最近一次修改时间,文件链接。
maclabel 属性说明: Display security context so it fits on most displays. maclabel属性由selinux.h头文件中的lgetfilecon获得。
-a 显示所有文件信息
-F 显示文件类型
s socket
l file link
- 普通文件
d 目录
b 块设备
c 字符设备
p 管道文件
? 未知文件
1.3 selinux
1.4 几点说明
(1) ls ps 能够显示文件中的 用户名 组名,这对于理解Android的沙箱机制和文件保护是很有帮助的,所以在这里说明。
(2) 所有这些参数的解释是参照4.4源码,不同手机上的实现可能有差异
(3) selinux是比较复杂的一部分内容,后续会补上,主要是着急向前分析Android系统的安全属性,这里就先略过。