使用adb相关命令,获取文件的读写权限以及修改文件权限

在用adb 调试时,输入adb shell进入文件系统,有这样一个目录:/system;如果想从/system/framework中读取一个文件,可以在cmd窗口输入:

adb pull /system/framework/am.jar /sdcard,运行结果如下:

        查看X盘下,确实存在am.jar文件,这里就不展示了。

        那如果想向/system中写入一个a.txt文件呢,于是在cmd窗口输入:adb push X:\a.txt /system/a.txt,运行结果如下:

        从提示来看push失败了,Read-only file system表示只有可读权限。想要向push文件到/system中,需要获取/system文件的读写权限。于是,做如下操作输入命令:

1: adb root(前提是:手机root了)

2:adb remount,重新挂载系统分区(前提是:adb root)

3:adb shell "mount -o rw,remount /system"

       运行结果如下:

        运行之后,什么结果也没有,那就是命令执行正确了。可以在文件系统(adb shell)窗口,再输入:mount;查看获取/system的读写权限,运行结果如下:

        倒数第4行有这样的一段命令:/dev/block/mtdblock0 /system yaffs2 rw 0 0 , 说明获取了/system的读,写权限了。若不进行上面操作,输入mount之后就不是rw,而是ro(read only)。需要注意的是,在手机重启后,/system文件变为read only,输入adb shell-> mount可以验证,这里不再展示。接下来cmd窗口中输入:adb push X:\a.txt /system/a.txt,就可以成功的对/system目录进行写操作。

      查看文件的权限,在文件系统(adb shell)中输入:ls -al   进行查看(后面不再阐述)

      简单介绍下android的文件访问权限,先看这样一张图,如下:

d:目录;           -: 文件;             l: 指向(link)。

后面9位,分为三组,以drwxr-xr-x为例进行说明:

d:表示目录;

rwx:该文件/目录所在的用户,也就是该用户具有的权限:可读,可写,可执行;

r-x:与该用户同组的其他用户,具有权限:可读,不可写,可执行;(linux系统中,用户会被分在某一个组中)

r-x:与该用户不同组的其他用户,具有权限:可读,不可写,可执行;

通过drwxr-xr-x,这样就可以知道system的访问权限了。

        如何修改一个文件的访问权限呢?例如上面将a.txt文件push到system目录下,查看其权限为:-rw-rw-rw-,在cmd窗口中输入:adb shell chmod 644 /system/a.txt。查看其文件读写权限为:-rw-r--r-- ,644分别为上面三组的值,6二进制:110,对应rw-;4二进制:100,对应r--。

       通过上面的学习,若需要向一个目录执行写操作,而该目录是read only,不可写,那么可以执行adb shell "mount -o rw,remount /system"获取目录的读写权限。若需要修改文件的权限,例如上面/system/a.txt的文件权限,可以执行adb shell chmod 644 /system/a.txt (644可以根据需求设置其他值,例如777)修改文件的读写权限。

你可能感兴趣的:(android,studio,android)