Android中 在目录下创建文件的权限添加 流程

Android中读写目录涉及到的权限一般有三个,一个是selinux,  另一个是用户组, 还有一个是目录本身权限问题,本文章针对这三点做详细解析

目录

一: Selinux权限问题

1: 先查看进程SSSPID的标签

2: 再查看要访问的目录的标签

二: 被访问目录本身权限问题

三: 用户组权限问题


一: Selinux权限问题

假设目录为/mnt/vendor/, 进程SSSPID需要在这个目录下创建一个文件,名为newfile

    那这个流程应该是,SSSPID进程先search /mnt/vendor目录,再open /mnt/vendor/目录,open一般伴有的权限是getattr, 然后再在这个目录下创建一个新文件newfile,那SSSPID需要对/mnt/vendor/目录拥有创建文件的权限,创建文件的权限一般是SSSPID先拥有对mnt/vendor这个目录即dir进行 read write add_name remove_name的权限,然后再在在这个目录下创建文件,即对file拥有create append open getattr ioctl setattr read write unlink的权限

怎么加权限呢?那要先知道进程SSSPID的标签是什么,再知道要访问的目录的标签是什么

1: 先查看进程SSSPID的标签

adb shell
ps -A -Z| grep SSSPID

然后回车,一般输出内容如下,那么SSSPIDSelinux就是SSSPID进程的标签

u:r:SSSPIDSelinux:s0  ystem   1020     1   27016   4432 0     0 S SSSPIDservice

2: 再查看要访问的目录的标签

adb shell
cd mnt
ls -l -Z

然后回车,结果如下,那么mnt/vendor 的标签就是mnt_vendor_file

drwxr-x---  3 root   media_rw         u:object_r:mnt_user_file:s0            60 1970-01-08 04:57 user
drwxr-xr-x  7 root   root             u:object_r:mnt_vendor_file:s0         140 1970-01-08 04:57 vendor
...

    如果遇到以下这种情况的话,也就是很多信息用?表示,那说明普通用户对此目录没有权限访问,需要执行adb root,再去查看标签,即可获取标签信息

drwxr-x---  3 root   media_rw u:object_r:mnt_user_file:s0       60 1970-01-08 04:57 user
d?????????  ? ?      ?        ?                                  ?                ? vendor

3: 添加Selinux权限   

好,目前看,主体和客体的Selinux信息我们都知道了,主体即SSSPIDSelinux,客体即mnt_vendor_file,那我们就可以愉快的加标签了

allow SSSPIDSelinux mnt_vendor_file:dir { read write open add_name getattr search remove_name };
allow SSSPIDSelinux mnt_vendor_file:file { create append open getattr ioctl setattr read write unlink };

其他目录也是一样的方法

二: 被访问目录本身权限问题

要查看被访问目录本身的权限,我们要看一下如果我们的用户组和被访问目录的不一致的时候,能否访问,这个怎么看呢,通过adb也可以看出来,如下

adb shell
cd mnt
ls -l
drwxr-x---  3 root   media_rw           60 1970-01-08 04:57 user
drwxr-xr-x  7 root   root              140 1970-01-08 04:57 vendor

看到mnt/vendor 目录的权限是drwxr-xr-x

mnt/vendor目录权限说明:

drwxr-xr-x 
代表这是个目录和本进程同user,同group的可读可写可执行和本进程不同user,同group的可读可执行和本进程同user,不同group的可读可执行

可以临时修改mnt/vendor的目录权限,使其他用户组用户可读可写权限,命令如下

adb shell
cd mnt
chmod 777 vendor
ls -l
drwxrwxrwx  7 root   root              140 1970-01-08 04:57 vendor

但这个目录的权限一般不能随便改,所以建议不改此处,那怎么修改我们的权限呢,紧接着就到了下一节-用户组权限问题,修改这个地方就可以解决这个问题 

三: 用户组权限问题

这个问题一般是进程与要访问的进程不在一个用户组里导致的,比如你的进程如果属于system用户组,你是不能访问用户组是root的文件的,这个怎么查看呢,可以在你的rc文件中查看,例如下:

service SSSPID /system/bin/SSSPIDclass coreuser systemgroup systemoneshot

那可以看到, SSSPID的user是system,group也是system, 我们再check一下mnt/vendor 的用户组是什么

adb shell
cd mnt
ls -l
drwxr-x---  3 root   media_rw           60 1970-01-08 04:57 user
drwxr-xr-x  7 root   root              140 1970-01-08 04:57 vendor

由上图可以看到mnt/vendor 的用户user是root,group是root,那如果现在SSSPID要在mnt/vendor下创建文件那是不可能的,这时候如果看log是没有异常输出的,但可以在SSSPID中用Access函数去看一下SSSPID进程有没有权限去read和write这个目录,答案是有read,但无法write,那我们就需要改一下SSSPID进程的用户组了,修改为如下重新push进机器即可

service SSSPID /system/bin/SSSPIDclass coreuser rootgroup system rootoneshot

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/722414.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《剑指offer》14--剪绳子(整数拆分)[C++]

目录 题目描述 贪心算法 输出结果 题目描述 把一根绳子剪成多段,并且使得每段的长度乘积最大。 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2 输出: 1 解释:…

Android开发技术总结,附项目源码

今天本文主要讲解: APK文件反编译 什么是反编译如何防止反编译APK文件的基本构造 APK加固的方案原理 APK加固总体架构APK打包基本流程Dex文件的意义 AES加密项目实战 APK加固项目实战APK脱壳技术实战 一.APK文件反编译 1.什么是反编译 定义: 利用…

Java后端核心——Servlet

目录 一.概述 二.基础实现 1.导入坐标 2.定义实现类 3.注解 4.访问Servlet 三.执行流程 四.生命周期 1.加载和实例化 2.初始化 3.请求处理 4.服务终止 五.方法 1.init 2.service 3.destroy 4.getServletInfo 5.getServletConfig 六.体系结构 七.urlPatter…

第二节 JDBC SQL语法

结构化查询语言(SQL)是一种标准化语言,允许对数据库执行操作,例如:创建数据记录,读取内容,更新内容和删除数据记录等。 本教程中将概述SQL,这是了解和学习JDBC概念的前提条件。 经过本章后,您将…

【C++】7-1 简单加法 分数 15

7-1 简单加法 分数 15 全屏浏览 切换布局 作者 刘利 单位 惠州学院 编写add函数,通过函数重载,实现对变量num,增加值n。num增加n的规则如下: 如果num和n都是数值,则num的值变为numn。 如果num为字符,…

前端小案例——登录界面(正则验证, 附源码)

一、前言 实现功能: 提供用户名和密码输入框。当用户提交表单时,阻止默认提交行为。使用正则表达式验证用户输入的内容,判断输入的是有效的邮箱地址还是身份证号码。根据验证结果,在输入框下方显示相应的提示信息。 实现逻辑&a…

ZYNQ--PS_PL交互(AXI_HP)

AXI_HP接口 通过AXI_HP接口,可直接通过AXI_FULL协议向DDR中通过DMA传输数据。 BD设计 AXI_HP接口设置 AXI_Master代码 module axi_full_master #(parameter C_M_TARGET_SLAVE_BASE_ADDR = 32h40000000,parameter integer C_M_AXI_BURST_LEN = 16,parameter integer …

【英语学习(1)】学习工具和学习习惯培养(自用向,非专业!持续更新中)

我英语一直一直一直就是学不好,好痛苦!!!!~~~~最近又重拾了激情,因此分享一下我的学习经历~大家共勉!!! 一、对话工具挑选 我的朋友们英语大多都很好,所以我根…

DiskMirror-spring-boot-starter 技术|

DiskMirror-spring-boot-starter 技术 diskMirror 实现了 SpringBoot 的 starter 能够集成到 SpringBoot 中。 DiskMirror 的 starter,通过引入此类,可以直接实现 diskMirror 在 SpringBoot 中的自动配置,接下来我们将使用案例逐步的演示 d…

[202403]xavier nx環境配置流程記錄

xavier nx環境配置流程記錄 引言1.板子環境2.設置默認python和pip2.安裝torch和torchvision2.1 下載正確的whl安裝文件2.2 開始安裝2.3 查看torch安裝情況 3.問題記錄3.1 問題1:Running pip as the root user can result in broken permissions3.2 問題2&#xff1a…

Java Web(八)--Servlet(三)

会话技术 为什么需要? 每个用户在使用浏览器与服务器进行会话的过程中,不可避免各自会产生一些数据,服务器要想办法为每个用户保存这些数据; 用户通过浏览器访问 Web 应用时,服务器都需要保存和跟踪用户的状态&…

探究与以太坊智能合约的交互

# 概述 智能合约是部署在区块链上的一串代代码,通常我们与智能合约的打交道 可以通过前端的Dapp,etherscan,metamask 等方式。作为开发人员可以通过调用提供的相关包来与之交互,如web3.js,ether.js , web3.j(java 语言…

外部存储空间

1. 存储在外部 私有 存储空间 /storage/emulated/0/Android/data/com.tiger.chapter06/files/Download/1709636015824.txt package com.tiger.chapter06;import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; impo…

linux kernel物理内存概述(六)

目录 伙伴系统 1、什么是伙伴? 2、伙伴系统的分配原理 3、伙伴系统回收 伙伴系统 1、什么是伙伴? 伙伴必须是大小相同并且在物理上连续的两个或者多个页。 2、伙伴系统的分配原理 首先根据内存分配接口函数gfp_t gfp_mask,找到内存分…

什么样的计算机专业应届生好找工作

什么样的计算机专业应届生好找工作 引言 计算机技术在现代社会中扮演着至关重要的角色,因此,计算机专业的就业前景一直备受关注。对于即将毕业的计算机专业应届生来说,找到一份满意的工作是他们的首要目标。但是,如何在竞争激烈…

网安笔记(二)

十三、OSI七层模型 OSI七层模型是一种将计算机通信协议按照功能分层的模型。每一层都有明确定义的功能和协议规范,各层之间可通过接口互相调用,以实现数据通信和交换。这些层分别是: 1. 应用层(Application Layer)&am…

前端最简单的方法,实现字段拼接

在前端实现两个字段的拼接是一个非常基础且常见的需求,可以通过多种编程语言和技术来实现,这里主要以JavaScript为例,介绍几种简单的方法: 1. 使用加号()运算符 JavaScript中最直观的字符串拼接方式是使用…

分布式事务Seata

分布式事务与Seata落地 一、事务基础 1.1 本地事务 事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销。 1.2 本地事务特性 本地事务四大特性: ACID A:原…

SuperPoint和SuperGlue 的算法介绍及学习应用经验分享

SuperPoint和SuperGlue 的算法介绍及学习应用经验分享 2024年01月03日 10:38186浏览 3喜欢 0评论 视频地址: SuperPoint和SuperGlue 的算法介绍及学习应用经验分享 好想 特征点匹配,为了计算位姿 特征点:关键点描述子&#xff08…

第五十回 插翅虎枷打白秀英 美髯公误失小衙内-mayfly-go:web 版 linux、数据库等管理平台

晁盖宋江和吴用到山下迎接雷横上山,宋江邀请雷横入伙,雷横以母亲年事已高为由拒绝了。 雷横回到郓城,听李小二说从东京新来了个表演的叫白秀英,吹拉弹唱跳,样样精通,于是雷横和李小二一起到戏院去看演出。…