Android系統中,system文件夾一般都是只讀屬性,無論是root用戶還是普通權限用戶,在Android安全研究或開發過程中,如果想要訪問和修改system文件夾下的內容的話就需要獲取system文件夾的寫屬性,因為Android版本的變化和Android各廠商機型的差異以及Android安全的不斷升級,所以在不同版本、不同機型下system文件夾修改讀寫屬性的方式也有較大的區別。
1.Android8.0以下
(1).獲取system分區的全名
adb shell mount
Android7.1.2
cancro:/ # mount rootfs on / type rootfs (ro,seclabel,relatime) tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,size=1465856k,nr_inodes=150784,mode=755) devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600) proc on /proc type proc (rw,relatime,gid=3009,hidepid=2) sysfs on /sys type sysfs (rw,seclabel,relatime) selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime) debugfs on /sys/kernel/debug type debugfs (rw,seclabel,relatime) none on /acct type cgroup (rw,relatime,cpuacct) tmpfs on /mnt type tmpfs (rw,seclabel,relatime,size=1465856k,nr_inodes=150784,mode=755,gid=1000) none on /config type configfs (rw,relatime) none on /dev/cpuctl type cgroup (rw,relatime,cpu) none on /dev/bfqio type cgroup (rw,relatime,bfqio) /dev/block/mmcblk0p23 on /system type ext4 (ro,seclabel,relatime,data=ordered) /dev/block/mmcblk0p24 on /cache type ext4 (rw,seclabel,nosuid,nodev,noatime,noauto_da_alloc,data=ordered) /dev/block/mmcblk0p25 on /data type ext4 (rw,seclabel,nosuid,nodev,noatime,noauto_da_alloc,data=ordered) /dev/block/mmcblk0p21 on /persist type ext4 (rw,seclabel,nosuid,nodev,relatime,data=ordered) /dev/block/mmcblk0p22 on /firmware type vfat (ro,context=ufirmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro) tmpfs on /storage type tmpfs (rw,seclabel,relatime,size=1465856k,nr_inodes=150784,mode=755,gid=1000) /data/media on /mnt/runtime/default/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,uid=1023,gid=1023,multiuser) /data/media on /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,uid=1023,gid=1023,multiuser) /data/media on /mnt/runtime/read/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,uid=1023,gid=1023,multiuser) /data/media on /mnt/runtime/write/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,uid=1023,gid=1023,multiuser)
/dev/block/mmcblk0p23 on /system type ext4 (ro,seclabel,relatime,data=ordered)
可以看得出/system的權限是ro,即是read only
(2).根據名稱重新掛載
mount -o rw,remount -t ext4 /system
/dev/block/mmcblk0p23 on /system type ext4 (rw,seclabel,relatime,data=ordered)
可以看到/system擁有rw的權限
當/system目錄為RW權限后,就可以隨意刪除或者替換系統應用
(3).完全重新掛載整個系統
adb root adb disable-verity adb remount
(4).如果要改回到ro權限,可以執行,如下命令
2.Android8.0以上
Android8.0以上通過以上mount命令,會發現找不到/system代表的節點和擁有的權限信息,這是因為Android8.0之后谷歌加入了A/B system的特性,system分區跟ramdisk分區打包在一起,因此系統起來之后也就不存在system分區了,而是直接把system鏡像掛載到/根目錄上。所以/proc/mounts文件中沒有包含/system的權限信息,此時如果使用上面的命令:
mount -o remount,rw /system
Android8.1.0
shamu:/ $ mount rootfs on / type rootfs (ro,seclabel) tmpfs on /dev type tmpfs (rw,seclabel,nosuid,relatime,size=1508708k,nr_inodes=147903,mode=755) devpts on /dev/pts type devpts (rw,seclabel,relatime,mode=600) proc on /proc type proc (rw,relatime,gid=3009,hidepid=2) sysfs on /sys type sysfs (rw,seclabel,relatime) selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime) /dev/block/mmcblk0p41 on /system type ext4 (ro,seclabel,relatime,data=ordered) none on /acct type cgroup (rw,relatime,cpuacct) none on /dev/memcg type cgroup (rw,relatime,memory) debugfs on /sys/kernel/debug type debugfs (rw,seclabel,relatime) tmpfs on /mnt type tmpfs (rw,seclabel,relatime,size=1508708k,nr_inodes=147903,mode=755,gid=1000) none on /config type configfs (rw,relatime) none on /dev/cpuctl type cgroup (rw,relatime,cpu) none on /dev/cpuset type cgroup (rw,relatime,cpuset,noprefix,release_agent=/sbin/cpuset_release_agent) pstore on /sys/fs/pstore type pstore (rw,seclabel,relatime) none on /dev/bfqio type cgroup (rw,relatime,bfqio) /dev/block/mmcblk0p38 on /cache type ext4 (rw,seclabel,nosuid,nodev,noatime,data=ordered) /dev/block/mmcblk0p1 on /firmware type ext4 (ro,context=ufirmware_file:s0,relatime,data=ordered) /dev/block/mmcblk0p26 on /persist type ext4 (rw,seclabel,nosuid,nodev,noatime,data=ordered) /dev/block/mmcblk0p21 on /fsg type ext4 (ro,context=ufsg_file:s0,nosuid,nodev,relatime) adb on /dev/usb-ffs/adb type functionfs (rw,relatime) tmpfs on /storage type tmpfs (rw,seclabel,relatime,size=1508708k,nr_inodes=147903,mode=755,gid=1000) /dev/block/mmcblk0p42 on /data type ext4 (rw,seclabel,nosuid,nodev,noatime,nobarrier,noauto_da_alloc,data=ordered) /data/media on /mnt/runtime/default/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid) /data/media on /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid) /data/media on /mnt/runtime/read/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=23,derive_gid) /data/media on /mnt/runtime/write/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=9997,multiuser,mask=7,derive_gid)
Android10
重新掛載/system分區會報錯
mount: '/system' not in /proc/mounts
臨時掛載上/system文件夾 ,重啟后失效
mount-oremount-orw/
其實為什么root用戶會出現/system文件夾無權限寫的情況的話,主要原因是/system所屬的用戶組不是root,而是system用戶組,所以需要重新掛載。
當然上面方法不能掛載/system目錄的話而且提示“’/dev/root’ is read-only”的話,那么是因為你的設備開啟了avb,此時就只能通過下面的方式完全重新掛載整個系統:
adb root adb disable-verity adb remount
如果adb disable-verity提示需要解鎖OEM的話,那么還需要先解鎖OEM:
adb reboot fastboot fastboot oem unlock fastboot reboot
提示解鎖成功后,重新執行命令就不會報錯!
審核編輯:劉清
-
OEM
+關注
關注
4文章
403瀏覽量
50465 -
Android系統
+關注
關注
0文章
56瀏覽量
13550 -
ADB驅動
+關注
關注
0文章
13瀏覽量
6294
原文標題:Android掛載system文件夾讀寫權限
文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論