详解“系统应用不能访问sdcard”

下面我来讲解一下为什么“系统应用不能访问sdcard”以及Android这样设计的原因。

1.为什么系统应用不能访问sdcard?

我们使用ls命令可以看到文件系统中一下内容的权限如下:

130|[email protected]:/ # ls -l /mnt/

drwxr-xr-x root system 1970-01-01 08:00 asec

drwxr-xr-x root system 1970-01-01 08:00 obb

drwx—— root root 1970-01-01 08:00 secure

d—rwxr-x system sdcard_rw 1970-01-01 08:00 sdcard (这是一种拥有者权限最低的特殊情况)



从上面可以看到sdcard目录所述用户是system,所属组是sdcard_rw。并且其目录权限是d—rwxr-x,那么这是什么意思呢?首先d标示sdcard是一个目录文件,—是system用户的对sdcard目录的权限,即没有任何的读写执行权限。这是典型的拥有者权限最低的情况。rwx是非system用户,sdcard_rw组用户对sdcard目录权限,即有读写和可可执行权限。这也就是为什么非系统应用在AndroidManifest.xml中添加如下的权限之后,便可访问sdcard。

android:name=”android.permission.WRITE_EXTERNAL_STORAGE”

添加该permission之后,应用就会被加到sdcard_rw组,也就拥有了rwx权限。r-x是非system用户,非sdcard_rw组用户对sdcard目录的权限,及读和执行权限。

2.Android为什么要这样做呢?

Because if the SD card gets unmounted it may need to kill any processes that have files open on it and we don’t want system processes being killed like that. If you want to access the SD card, you need to not use the system shared user ID.

时间: 2024-11-01 14:16:50

详解“系统应用不能访问sdcard”的相关文章

全面inux主机安全配置详解--系统OS安全(第一部分)

Linux主机安全配置详解 系统安全分为: 第一部分: BIOS密码,更改合适启动选项(禁止改bios/禁止更改第一启动选项,防止恶意的引导) GRUB密码 系统密码(密码策略) 分区加密 第二部分: 最小权限法(su/sudo) 最小服务法 文件安全(suid/sgid/stick/chattr) pam模块的使用 升级系统和软件 系统安全: BIOS密码(bios/cmos) 调整BIOS引导设置 修改启动顺序,正确做法:第一启选项为磁盘 设置管理密码 禁用Ctrl+Alt+Del重启热键

全面inux主机安全配置详解--系统OS安全(第二部分)

系统安全 最小服务法 文件安全(suid/sgid/stick/chattr) 升级系统和软件 最小权限法(su/sudo) SSH安全建议 最小服务法(system v/xinetd) 关闭不需要的服务: # vim /root/service.sh #!/bin/bash service xinetd stop chkconfig xinetd off services="network sshd syslog lvm2-monitor messagebus sendmail crond g

以Apache服务器、php语言为例 详解动态网站的访问过程

目前来说,网站页面主要分为静态页面和动态页面,纯静态页面组成的网站现在相对比较少见,大型网站一般使用的是动态网站建站技术,还有一部分网站是静态网页与动态网页共存, 本文以Apache服务器.php语言为例,详解动态网站的访问过程,下面直接切入本文主题. (1)用户端访问服务器端的html文件 S1:通过本机配置好的DNS域名服务器地址寻找DNS服务器,将网站URL中的Web主机域名解析为Web服务器所在的Linux操作系统(Apache通常与Linux操作系统组合使用)中对应的IP地址. S2:

详解Exchange 2013 客户端访问高可用

详解Exchange 2013 客户端访问高可用 当我们在考虑Exchange Server 2013的高可用时,除了一定要保证邮箱服务器高可用之外,我们也必须确保客户端访问服务器的高可用性. 学完本节后我们将能够: 1. 为客户端访问服务器的高可用性规划软硬件: 2. 描述网络负载均衡(NLB); 3. 描述应用NLB的关键好处: 4. 理解客户端访问服务器的高可用方式; 5. 配置客户端访问的高可用性. 环境: Exchange 版本 Exchange Server 2013 SP1 Exc

HTTP协议详解以及URL具体访问过程

1.简介 1.1.HTTP协议是什么? 即超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准.从网络参考模型来看,它是属于应用层.它规定了计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器. 简单的来说,它就是基于应用层一个规范一个标准!通讯双发都需要遵守这一准则,这就是http协议! 1.2.http简史

AutoResetEvent详解(线程独占访问资源)

由来: 在学习工作流的过程中,宿主程序中会出现这么一段代码: staticAutoResetEvent instanceUnloaded = new AutoResetEvent(false); 然后就是在方法中这样使用: instanceUnloaded.Set();//将事件状态设置为终止状态,允许一个或多个等待线程继续 instanceUnloaded.WaitOne();//对于WaitOne方法为阻止当前线程,直到收到信号! 对于这部分内容当时不是很理解,下面我们先介绍一下AutoRe

InnoDB数据字典详解-系统表

1.简介 InnoDB中,实际上看不到系统表.有4个最基本的系统表来存储表的元数据:表.列.索引.索引列等信息.这4个表分别是SYS_TABLES.SYS_COLUMNS.SYS_INDEXES.SYS_FIELDS.下面分别介绍 2.SYS_TABLES 存储所有以InnoDB为存储引擎的表,每条记录对应一个表.该表的列分别是: NAME:表名 ID:表的ID号 N_COLS:表的列数 TYPE:表的存储类型,包括记录的格式.压缩等信息 MIX_ID.MIX_LEN.CLUSTER_NAME:

Linux 硬件RAID详解系统功能图

RAID-0(条带模式) 特点: 在读写的时候可以实现并发,所以相对其读写性能最好,每个磁盘都保存了完整数据的一部分,读取也采用并行方式,磁盘数量越多,读取和写入速度越快. 因为没有冗余,一个硬盘坏掉全部数据丢失. 至少两块硬盘才能组成Raid0阵列. 容量: 所有硬盘之和.磁盘利用率为100% 生产应用场景 1.负载均衡集群下面的多个相同RS节点服务器 2.分布式文件存储下面的主节点 3.MySQL主从复制的多个slave服务器 4.对性能要求很高,对冗余要求很低的相关业务 RAID-1 :m

24、Linux启动流程和grub详解

还记得Windows的启动流程吗?相信大家能说出来个大概,为什么说出个大概呢,因为Windows是图形界面启动的,但是开机过程都做了什么,你知道吗,相反,Linux启动的时候,会把这些加载到屏幕上面显示,那接下来我们来看看Linux启动都发生了些什么把!!! Linux启动流程图 简解开机启动流程 当用户打开电源后,BIOS开机自检,确定启动设备,安装启动设备启动设备上面安装的GRUB开始引导Linux,Linux首先先进行内核引导,通过跟切换,执行init程序,init程序确定启动级别,根据启