您的位置:首页 > 运维架构 > Linux

android入门开发之linux文件权限(六)

2016-10-24 14:01 381 查看

前言

说到权限,相信大部分人都用的还是windows系统,既然说到了权限这一块,我就不得不吐槽windows权限做的真是垃圾中的战斗机,没有比windows权限做的更垃圾的了。相反,linux系统下的权限控制就做的比较好,所以呼吁广大小伙伴们,特别是深受windows荼毒的小伙伴,赶紧弃win选linux吧。反正我是等到买了mac后,宁愿用mac os都不用windows了。真的是太恶心,太垃圾了。当然windows也有做的比较好的一面,像图形用户界面的交互做的就比较好,要是哪天能够把权限做的像linux一样,我估计我还是会选择windows的,不过我估计是不可能了,我还是安安心心用我的linux去了。

可能有小伙伴会有疑问,为什么要把权限这点小知识点单独拎出来讲,我个人认为android是在linux的基础上进行开发的,本质其实还是linux,我觉得既然作为一个android开发者,连linux文件权限都不清除的话,好像有点说不过去。

生成不同权限的文件

既然我们要看linux下的权限说明,我们就从基础入手,我们先用代码在我们之前创建的HelloWorld中写上如下代码:



这几行代码执行完成之后,我们利用adb shell指令进入当前模拟器的linux环境

执行 adb shell



执行 cd data/data/com.selfassu.helloworld 注意:后面的com.selfassu.helloworld换成你自己的应用包名



执行ls -l 显示当前目录所有文件列表

执行cd files 进入files目录

执行ls -l



以上几步做完之后,你就可以看到在files(路径:data/data/package/files)文件夹下,有一下四个文件,名字分别为append.txt, private.txt, readable.txt, writable.txt, 创建的文件对应不同的数据权限。或许你现在看不懂-rw-rw—-是什么意思,但是别着急,我们马上就来给你分析分析这一串数据代表的意义。

注意:

执行adb shell指令时候,出现

error: more than one device/emulator

错误,出现这个错误的原因主要是因为设备不止一台,我们要进入某一台的设备shell环境下,必须指定需要进入的shell环境的设备序列号:

adb -s 设备序列号 shell


linux权限详解

权限字符串解释

linux文件权限一共有十位,第一位是单独一组,后面的九位是每三位一组。

第1位代表的是文件的类型:

如果是”d”,就是文件夹

如果是”l”,文件快捷方式

如果是”-“, 就是文件

第2到4位是所属用户对文本的权限

r 读权限

w 写权限

x 执行权限

第5到7位 是该文件所属用户组对该文件的权限

r 读权限

w 写权限

x 执行权限

第8到10位 是其他用户对该文件的权限

r 读权限

w 写权限

x 执行权限

将字母转换成二进制

用二进制表示:

规则

如果是-,就用0来表示,

如果不是-,就用1表示。

将二进制的数字转换成十进制

换成十进制后,可以用linux指令更改文件权限

这样说是不是太抽象了。那么可以,我们举个栗子:

-rwxrw-r– 换成二进制数字为111110100(注意第一位不需要换算成二进制的数字)

第一位的“-”, 可能是“d” 或者“l”,这一位是没有办法改变的,这个是文件的固有属性,就像人出生一样,有的人一出生就是男性,而有的人一出生就是女性,比喻不太恰当,但是我觉得正好可以说明这个问题。

按照上面的分法,将二进制数字每三位换成十进制数字就是:764

下面你们自己做做 -rw-rw–w- 这个对应的十进制的权限数字是多少呢?

好啦,这样是不是看起来更容易理解一点?

使用指令chmod更改linux文件权限

linux中更改文件权限的指令是chmod,是change mode的简写

然后使用linux指令更改权限

chmod 764 文件名称




我已经更改了private.txt文件的权限,细心的小伙伴可以仔细看看,private.txt的权限是不是和之前不一样了?是不是so easy?你没有猜错,linux下更改文件权限就是这么简单。比windows强多了,在权限这点上。

linux权限的详细图解

详细图解如图所示



总结

android中的文件权限大致就是这样吧,当然,权限肯定不止这些,更深入的还需要你们自己去挖掘。下一节我们来一起学习一下android开发中的UI设计。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息