安卓手机外置sd卡权限怎么打开

安卓手机外置sd卡权限怎么打开,第1张

在2x的版本中,在manifest中配置的权限androidpermissionWRITE_EXTERNAL_STORAGE确实是用来使得sd卡获得写的权限。而在40开发的源码当中,由于有了内外置sd卡的区分,androidpermissionWRITE_EXTERNAL_STORAGE的权限用来设置了内置sd卡的写权限,如果在manifest中只是配置了这个权限,那个应用只能在内置sd卡中进行写 *** 作,还是无法在外置sd卡中进行写 *** 作。

需要写外置sd卡的话,需要配置另一个权限androidpermissionWRITE_MEDIA_STORAGE,这样就可以在外置sd卡中进行写入 *** 作了。

这两个权限都被定义在 android源码目录\frameworks\base\data\etc\platformxml中:

<permission name="androidpermissionWRITE_EXTERNAL_STORAGE" >

<group gid="sdcard_rw" />  

</permission>

<permission name="androidpermissionWRITE_MEDIA_STORAGE" >

<group gid="media_rw" />  

</permission>  

使用到的类主要是framework/base/core/java/android/os/storage/StorageVolumejava及相同目录下的StorageManagerjava文件

StorageManager类可以获得所有的存储媒体列表,及StorageVolume类型的数组,从而可以获得对应存储是否可读写一类的信息。

如果是安卓60的外置SD卡的话可以先打开设置,然后应用程序——应用程序管理器,再打开某个软件——存储——选择已使用的存储空间,然后点更改,选择SD卡,这样就可以了。

在44中,SD被谷歌定义为二级外部存储,机身存储才是主要外部存储

sd的便捷 *** 作有安全隐患和用户资料泄漏的危险,移动到其他设备很容易读取资料之类的,限制读写权限也是对用户安全负责的态度

第三方app是无法向二级外部存储写入数据,只有授予了权限的app才可以在二级外部存储创建,修改和删除数据

这样的设定带来了一个好处,即删除第三方app的时候不会在外部存储留下无用的数据

以前就有很多网友就反应手机的SD卡可用空间越用越少,即使删除app也无济于事,其实就是第三方app删除的时候并没有相应的删除SD卡上的数据缓存造成的

首先手机必须获取了root权限

打开re文件管理器并找到 etc\permissions\platformxml 这个文件

将文件的只读属性改为读写属性并用文本编辑器打开这个文件

找到

<permission name="androidpermissionWRITE_EXTERNAL_STORAGE">

<group gid="sdcard_r" />

<group gid="sdcard_rw" />

这一串字符,在下面添加 <group gid="media_rw" /> 即可

添加完保存退出重启手机,第三方app就有了在SD卡上写入数据的权限了~~

先ROOT

用re文件管理器找到 etc\permissions\platformxml 这个文件。记得先挂载只读为读写,否则无法写入

长按这个文件,找到打开方式,用文本编辑打开。然后找到

<permission name="androidpermissionWRITE_EXTERNAL_STORAGE">

<group gid="sdcard_r" />

<group gid="sdcard_rw" />

在代码最后面添加 <group gid="media_rw" />

变成

<permission name="androidpermissionWRITE_EXTERNAL_STORAGE">

<group gid="sdcard_r" />

<group gid="sdcard_rw" />

<group gid="media_rw" />

注意段首要对齐,"media_rw"和/>之间有空格。修改完保存并退出 重启

1、find的语法:find[起始目录]寻找条件 *** 作2、表述方式:findPATHOPTION[-execCOMMAND{}\;]find命令会根据用户给的option,也就是寻找条件从用户给出的目录开始对其中文件及其下子目录中的文件进行递归搜索。该命令中的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。逻辑运算符and、or、not的含义为:(1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。例如:find–name’tmp’–xtypec-user’inin’%该命令寻找三个给定条件都满足的所有文件。(2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。例如:find–name’tmp’–o–name’mina’%该命令查询文件名为’tmp’或是匹配’mina’的所有文件。(3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。例如:find!–name’tmp’%该命令查询文件名不是’tmp’的所有文件。需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免Shell本身对括号引起误解,在话号前需要加转义字符“\”来去除括号的意义。例:find\(–name’tmp’–xtypec-user’inin’\)3、在find中的option的内容了:在option中,具体有参数:-name’字串’查找文件名匹配所给字串的所有文件,字串内可用通配符、、[]。-lname’字串’查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符、、[]。-gidn查找属于ID号为n的用户组的所有文件。-uidn查找属于ID号为n的用户的所有文件。-group’字串’查找属于用户组名为所给字串的所有的文件。-user’字串’查找属于用户名为所给字串的所有的文件。-empty查找大小为0的目录或文件。-path’字串’查找路径名匹配所给字串的所有文件,字串内可用通配符、、[]。-perm权限查找具有指定权限的文件和目录,权限的表示可以如711,644。-sizen[bckw]查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块。-typex查找类型为x的文件,x为下列字符之一:b块设备文件c字符设备文件d目录文件p命名管道(FIFO)f普通文件l符号链接文件(symboliclinks)ssocket文件-xtypex与-type基本相同,但只查找符号链接文件。以时间为条件查找-aminn查找n分钟以前被访问过的所有文件。-atimen查找n天以前被访问过的所有文件。-cminn查找n分钟以前文件状态被修改过的所有文件。-ctimen查找n天以前文件状态被修改过的所有文件。-mminn查找n分钟以前文件内容被修改过的所有文件。-mtimen查找n天以前文件内容被修改过的所有文件。-print:将搜索结果输出到标准输出。

你好楼主,这是谷歌对安卓的一个限制,这样的设定带来了一个好处,即删除第三方app的时候不会在外部存储留下无用的数据,以下是解决方法:首先手机必须获取了root权限 打开re文件管理器并找到 etcpermissionsplatformxml 这个文件 将文件的只读属性改为读写属性并用文本编辑器打开这个文件 找到 <permission name="androidpermissionWRITE_EXTERNAL_STORAGE"> <group gid="sdcard_r" /> <group gid="sdcard_rw" /> 这一串字符,在下面添加 <group gid="media_rw" /> 即可 添加完保存退出重启手机,第三方app就有了在SD卡上写入数据的权限了,希望可以帮到楼主。

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。 SELinux 是 26 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。[1] 大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。 SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNⅨ权限更好的访问控制。 1 简介 SELinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。 Security-Enhanced Linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/kernel/security/selinux) 2) 用户态工具 SELinux是一个安全体系结构,它通过LSM(Linux Security Modules)框架被集成到Linux Kernel 26x中。它是NSA (United States National Security Agency)和SELinux社区的联合项目。 SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个用户、进程、应用和文件的访问和转变的权限,然后它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,安全策略指定如何严格或宽松地进行检查。 SELinux对系统用户(system users)是透明的,只有系统管理员需要考虑在他的服务器中如何制定严格的策略。策略可以根据需要是严格的或宽松的。 只有同时满足了标准Linux访问控制和SELinux访问控制时,主体才能访问客体。 11 DAC与MAC的关键区别(root用户) 安 全增强型Linux(SELinux)开始是由NSA(国家安全局)启动并加入到Linux系统中的一套核心组件及用户工具,可以让应用程序运行在其所需的最低权限上。未 经修改过的Linux系统是使用自主访问控制的,用户可以自己请求更高的权限,由此恶意软件几乎可以访问任何它想访问的文件,而如果你授予其root权 限,那它就无所不能了。 在SELinux中没有root这个概念,安全策略是由管理员来定义的,任何软件都无法取代它。这意味着那些潜在的恶意软件所能造成的损害可以被控制在最小。一般情况下只有非常注重数据安全的企业级用户才会使用SELinux。 *** 作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC)。标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC。 所有DAC机制都有一个共同的弱点,就是它们不能识别自然人与计算机程序之间最基本的区别。简单点说就是,如果一个用户被授权允许访问,意味着程序也被授权访问,如果程序被授权访问,那么恶意程序也将有同样的访问权。 DAC最根本的弱点是主体容易受到多种多样的恶意软件的攻击,MAC就是避免这些攻击的出路,大多数MAC特性组成了多层安全模型。 SELinux实现了一个更灵活的MAC形式,叫做类型强制(Type Enforcement)和一个非强制的多层安全形式(Multi-Level Security)。 在Android42中,SELinux是个可选项,谷歌并没有直接取消root权限或其他功能。这是一个为企业级用户或是对隐私数据极为重视的用户提供的选项,普通消费者则完全可以关闭它。 2 SELinux的运行机制 SELinux决策过程如下图所示: 当一个subject(如: 一个应用)试图访问一个object(如:一个文件),Kernel中的策略执行服务器将检查AVC (Access Vector Cache), 在AVC中,subject和object的权限被缓存(cached)。如果基于AVC中的数据不能做出决定,则请求安全服务器,安全服务器在一个矩阵中查找“应用+文件”的安全环境。然后根据查询结果允许或拒绝访问,拒绝消息细节位于/var/log/messages中。 3 SELinux伪文件系统 /selinux/伪文件系统kernel子系统通常使用的命令,它类似于/proc/伪文件系统。系统管理员和用户不需要 *** 作这部分。/selinux/目录举例如下: 代码如下: -rw-rw-rw- 1 root root 0 Sep 22 13:14 access dr-xr-xr-x 1 root root 0 Sep 22 13:14 booleans --w------- 1 root root 0 Sep 22 13:14 commit_pending_bools -rw-rw-rw- 1 root root 0 Sep 22 13:14 context -rw-rw-rw- 1 root root 0 Sep 22 13:14 create --w------- 1 root root 0 Sep 22 13:14 disable -rw-r--r-- 1 root root 0 Sep 22 13:14 enforce -rw------- 1 root root 0 Sep 22 13:14 load -r--r--r-- 1 root root 0 Sep 22 13:14 mls -r--r--r-- 1 root root 0 Sep 22 13:14 policyvers -rw-rw-rw- 1 root root 0 Sep 22 13:14 relabel -rw-rw-rw- 1 root root 0 Sep 22 13:14 user 如cat enforce其值可能如下: 1: enforcing mode 0: permissive mode 4 SELinux配置文件 SELinux配置文件(configuration)或策略文件(policy)位于/etc/目录下。 41 /etc/sysconfig/selinux配置文件 /etc/sysconfig/selinux是一个符号链接,真正的配置文件为:/etc/selinux/config 配置SELinux有如下两种方式: 1) 使用配置工具:Security Level Configuration Tool (system-config-selinux) 2) 编辑配置文件 (/etc/sysconfig/selinux) /etc/sysconfig/selinux中包含如下配置选项: 1) 打开或关闭SELinux 2) 设置系统执行哪一个策略(policy) 3) 设置系统如何执行策略(policy) 42 配置文件选项 421 SELINUX SELINUX=enforcingpermissivedisabled —定义SELinux的高级状态 • enforcing — The SELinux security policy is enforced • permissive — The SELinux system prints warnings but does not enforce policy • disabled — SELinux is fully disabled SELinux hooks are disengaged from the kernel and the pseudo-file system is unregistered 422 SELINUXTYPE(安全策略) SELINUXTYPE=targetedstrict — 指定SELinux执行哪一个策略 • targeted — 只有目标网络daemons保护。每个daemon是否执行策略,可通过system-config-selinux进行配置。保护常见的网络服务,为SELinux默认值。 可使用如下工具设置每个daemon的布尔值: 1) getsebool -a: 列出SELinux的所有布尔值 2) setsebool: 设置SELinux布尔值,如:setsebool -P dhcpd_disable_trans=0,-P表示即使用reboot之后,仍然有效。 • strict — 对SELinux执行完全的保护。为所有的subjects和objects定义安全环境,且每一个Action由策略执行服务器处理。提供符合Role-based-Access Control(RBAC)之policy,具备完整的保护功能,保护网络服务、一般指令及应用程序。 423 SETLOCALDEFS SETLOCALDEFS=01 — 控制如何设置本地定义(users and booleans)。 • 1:这些定义由load_policy控制,load_policy来自于文件/etc/selinux/ • 0:由semanage控制 43 /etc/selinux/目录 /etc/selinux/是存放所有策略文件和主要配置文件的目录。其例子如下: 代码如下: -rw-r--r-- 1 root root 448 Sep 22 17:34 config drwxr-xr-x 5 root root 4096 Sep 22 17:27 strict drwxr-xr-x 5 root root 4096 Sep 22 17:28 targeted 5 SELinux工具 1) /usr/sbin/setenforce — 修改SELinux运行模式,例子如下: • setenforce 1 — SELinux以强制(enforcing)模式运行 • setenforce 0 — SELinux以警告(permissive)模式运行 为了关闭SELinux,你可以修改配置文件:/etc/selinux/config或/etc/sysconfig/selinux 2) /usr/sbin/sestatus -v — 显示系统的详细状态,例子如下: SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted Process contexts: Current context: user_u:system_r:unconfined_t:s0 Init context: system_u:system_r:init_t:s0 /sbin/mingetty system_u:system_r:getty_t:s0 3) /usr/bin/newrole — 在一个新的context或role中运行一个新的shell 4) /sbin/restorecon — 通过为适当的文件或安全环境标记扩展属性,设置一个或多个文件的安全环境 5) /sbin/fixfiles — 检查或校正文件系统中的安全环境数据库 6) getsebool — getsebool -a:查看所有布尔值 7) setsebool — 参数-P,永久性设置 8) chcon 修改文件、目录的安全上下文 chcon –u[user] chcon –r[role] chcon –t[type] chcon –R 递归 6 类型强制的安全上下文(Type Enforcement Security Context) 安全上下文是一个简单的、一致的访问控制属性,在SELinux中,类型标识符是安全上下文的主要组成部分,由于历史原因,一个进程的类型通常被称为一个域(domain),"域"和"域类型"意思都一样,我们不必苛刻地去区分或避免使用术语域,通常,我们认为域、域类型、主体类型和进程类型都是同义的,即都是安全上下文中的“TYPE”。 SELinux对系统中的许多命令做了修改,通过添加一个-Z选项显示客体和主体的安全上下文。 1) 系统根据PAM子系统中的pam_selinuxso模块设定登录者运行程序的安全上下文; 2) 文件的Security Contex规则如下: • rpm包安装的:会根据rpm包内记录来生成安全上下文; • 手动创建的文件:会根据policy中规定的来设置安全上下文; • cp:会重新生成安全上下文; • mv:安全上下文则不变。 3) id -Z 显示了你的shell的安全上下文; 4) ps -Z 检查进程的安全上下文; 5) ls -Z 检查文件、目录的安全上下文; 61 安全上下文格式 所有 *** 作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的。在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。常常用下面的格式指定或显示安全上下文: USER:ROLE:TYPE[LEVEL[:CATEGORY]] 安全上下文中的用户和角色标识符除了对强制有一点约束之外对类型强制访问控制策略没什么影响,对于进程,用户和角色标识符显得更有意义,因为它们是用于控制类型和用户标识符的联合体,这样就会与Linux用户账号关联起来;然而,对于客体,用户和角色标识符几乎很少使用,为了规范管理,客体的角色常常是object_r,客体的用户常常是创建客体的进程的用户标识符,它们在访问控制上没什么作用。 标准Linux安全中的用户ID和安全上下文中的用户标识符之间的区别,就技术而论,它们是正交标识符,分别用于标准的和安全增强的访问控制机制,这两者之间的任一相互关联都是通过登陆进程按照规范严格规定的,而不是通过SELinux策略直接强制实施的。 611 USER 1) user identity:类似Linux系统中的UID,提供身份识别,用来记录身份;安全上下文的一部分; 2) 三种常见的 user: • user_u :普通用户登录系统后的预设; • system_u :开机过程中系统进程的预设; • root :root 登录后的预设; 3) 在 targeted policy 中 users 不是很重要; 4) 在strict policy 中比较重要,所有预设的 SELinux Users 都是以 “_u” 结尾的,root 除外。 612 ROLE 1) 文件、目录和设备的role:通常是 object_r; 2) 程序的role:通常是 system_r; 3) 用户的role:targeted policy为system_r; strict policy为sysadm_r、staff_r、user_r;用户的role,类似系统中的GID,不同角色具备不同的的权限;用户可以具备多个role;但是同一时间内只能使用一个role; 4) 使用基于RBAC(Roles Based Access Control) 的strict和mls策略中,用来存储角色信息 613 TYPE 1) type:用来将主体(subject)和客体(object)划分为不同的组,给每个主体和系统中的客体定义了一个类型;为进程运行提供最低的权限环境; 2) 当一个类型与执行中的进程相关联时,其type也称为domain; 3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心脏,预设值以_t结尾; LEVEL和CATEGORY:定义层次和分类,只用于mls策略中 • LEVEL:代表安全等级,目前已经定义的安全等级为s0-s15,等级越来越高 • CATEGORY:代表分类,目前已经定义的分类为c0-c1023 62 对比SELinux和标准Linux的访问控制属性 在标准Linux中,主体的访问控制属性是与进程通过在内核中的进程结构关联的真实有效的用户和组ID,这些属性通过内核利用大量工具进行保护,包括登陆进程和setuid程序,对于客体(如文件),文件的inode包括一套访问模式位、文件用户和组ID。以前的访问控制基于读/写/执行这三个控制位,文件所有者、文件所有者所属组、其他人各一套。 在SELinux中,访问控制属性总是安全上下文三人组(用户:角色:类型)形式,所有客体和主体都有一个关联的安全上下文。需要特别指出的是,因为SELinux的主要访问控制特性是类型强制,安全上下文中的类型标识符决定了访问权。 注意:SELinux是在标准Linux基础上增加了类型强制(TE: Type Enforcement),这就意味着标准Linux和SELinux访问控制都必须满足先要能访问一个客体,例如:如果我们对某个文件有SELinux写入权限,但我们没有该文件的w许可,那么我们也不能写该文件。下表总结了标准Linux和SELinux之间访问控制属性的对比: 标准Linux SELInux 进程安全属性 真实有效的用户和组ID 安全上下文 客体安全属性 访问模式、文件用户和组ID 安全上下文 访问控制基础 进程用户/组ID和文件的访问模式, 此访问模式基于文件的用户/组ID 在进程类型和文件类型 之间允许的许可 63 小结 1) 系统中每个文件、目录、网络端口等都被指定一个安全上下文,policy 则给出各安全上下文之间的作用规则。 2) SELinux根据policy及security context规则来决定存取行为是否可执行; 3) Subject(主体):系统进程,比如/usr/sbin/>

1、RE管理器挂载为读写,需要root,打开etc/permissions目录,找到platformxml文件,勾选,然后在…菜单中选择“在文本编辑器中打开

2、查找代码:

找到 <permission name="androidpermissionWRITE_EXTERNAL_STORAGE" >

<group gid="sdcard_r" /> (此行代码没有的可以忽略不计)

<group gid="sdcard_rw" />

</permission>

将之改为:

<permission name="androidpermissionWRITE_EXTERNAL_STORAGE" >

<group gid="sdcard_r" />

<group gid="sdcard_rw" />

<group gid="media_rw" />

</permission>

(注意:段首对齐,"media_rw"和/>之间有空格。或可复制上一行代码进行修改。)

然后保存退出后重启就好了!

以上就是关于安卓手机外置sd卡权限怎么打开全部的内容,包括:安卓手机外置sd卡权限怎么打开、为什么 Android 4.4 KitKat 限制第三方应用的 SD 卡读写权限、安卓5.1.1限制了SD卡的读写权限,有什么办法解决吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10073683.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存