android用户权限获取.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
android用户权限获取

一、关于android的用户机制? ? 首先,Android不同的应用拥有不同的进程,进程有独立的地址空间,进程与进程间默认是不能互相访问的,是一种很可靠的保护机制。? ??Android通过为每一个安装在设备上的包(apk)分配唯一的linux userID来实现,名称为app_加一个数字,比如app_43不同的UserID,运行在不同的进程,所以apk之间默认便不能相互访问。? ? 一般的讲,如果你没有手动的设置uid,Android将为每一个APK独立的分配一个进程,一个UserId。所以不同的apk之间不能互相访问对方的私有数据。Android的系统程序也有它的UId,Android的系统程序的Uid是android.uid.system,所以,普通的apk用户是不能访问System的数据。? ???使用adb shell命令,进入android的shell,输入ls -l? ???可以看到输出详细的文件目录信息。例如? ? drwxrwxr-x??root? ???system? ?? ?? ?? ?2013-10-08 17:25 mnt? ? 最前面的第2~10个字符是用来表示权限。第一个字符一般用来区分文件和目录,第2~10个字符当中的每3个为一组,左边三个字符表示所有者权限,中间3个字符表示与所有者同一组的用户的权限,右边3个字符是其他用户的权限。这三个一组共9个字符,代表的意义如下:r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录的权限。w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。? ???因为其他用户组拥有r-x的权限,所以,即便不是目录所有者或同组用户,也可以读取和执行/mnt的东西。? ???后边的两组表示所有者为root,用户组为system。二、获取root,操作/data目录? ?? ?进入整体,操作data目录.? ?? ?之前ls -l 会发现/data目录的权限为? ?? ?drwxrwx--x system system? ?? ?由此得知,要想操作data目录? ?? ?第一种,就是必须为system用户组或者有用户权限,因为系统应用可以访问这些目录的,其他用户只有执行权限。? ?? ?第二种,就是把/data目录的权限更改为其他用户也可以访问1、修改/data目录权限? ? 修改/data权限,必须有root,这个简单。但是需要注意的是,只有执行su后的那一段流才能继续保持root权限,如果再次调用runtime.exe(xxx);这里将失去root权限。? ? 至于为什么,我猜可能是每一次runtime.exe()都是打开一个终端,之后的输入输出流都是这个终端的输入输出,而再次执行,就相当于关闭了当前终端,你的root权限就么有了。以上这一段属猜想,欢迎拍砖。? ? 还有就是,更改了权限,操作完后,就把权限再改回去。? ? 添加权限的cmd= chmod 777 /data? ? 改回去的cmd = chmod 771 /data? ? 具体改权限这块不会的,百度下,就明白了。? ? 如果操作过程中,遇到其他类似的问题,活学活用应该能解决。以下为代码,如下。? ???Runtime?runtime =?null;? ?? ???Process process=null;? ?? ???if (runtime==null) {? ?? ?? ?? ?runtime=Runtime.getRuntime();? ?? ?? ?? ?try {? ?? ?? ?? ?? ? process=runtime.exec(su);? ??? ?? ?? ?? ?} catch (IOException e) {? ?? ?? ?? ?? ? // TODO Auto-generated catch block? ?? ?? ?? ?? ? e.printStackTrace();? ?? ?? ?? ?}? ?? ???}? ?? ???try {? ?? ?? ?? ?InputStream inputStream=process.getInputStream();? ?? ?? ?? ?OutputStream outputStream=process.getOutputStream();? ?? ?? ?? ?cmd=cmd+\n;? ?? ?? ?? ?outputStream.write(cmd.getBytes());? ?? ?? ?? ?outputStream.close();?

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档