zoukankan      html  css  js  c++  java
  • android系统权限的管理

    被权限搞了好久,决定好好的研究一下;

    参考资料

    http://blog.csdn.net/xieyan0811/article/details/6083019?reload

    http://blog.csdn.net/simonjay2007/article/details/42103833

    1. 修改文件系统权限

    1. 查看每个系统的权限:特别是/system

    root@sabresd_6dq:/ # mount
    rootfs / rootfs ro,size=345444k,nr_inodes=86361 0 0
    tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0...
    pstore /sys/fs/pstore pstore rw,relatime 0 0
    /dev/block/mmcblk3p5 /system ext4 ro,relatime,data=ordered 0 0
    /dev/block/mmcblk3p4 /data ext4 rw,nosuid,nodev,noatime,nodiratime,noauto_da_alloc,errors=panic,data=ordered 0 0
    /dev/block/mmcblk3p6 /cache ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
    /dev/block/mmcblk3p7 /device ext4 ro,nosuid,nodev,relatime,data=ordered 0 0
    ...

    可以看出来为只读文件系统,如果想要改为rw,有两种方法:

    1. 重新挂在文件系统(坏处:关机就没了,也没有放入镜像文件,就相当于一个临时变量,临时调试可以用这个方法)

    2. 修改源码fstab文件(永久性的,编译进入镜像文件)

    1. 重新挂在文件系统

    root@sabresd_6dq:/ # mount -o remount /dev/block/mmcblk3p5 /system

    再次mount查看发现为rw了

    2. 修改源码改变文件系统属性

    方法一:

    直接查看out/target/product/sabresd_6dq/root/fstab.freescale

    找到/system进行修改,然后make, 不过清除掉就没有了

    方法二:

    查看device/fsl/sabresd_6dq/BoardConfig.mk 

    BUILD_TARGET_FS ?= ext4
    include device/fsl/imx6/imx6_target_fs.mk
    
    ifeq ($(BUILD_TARGET_DEVICE),sd)
    ADDITIONAL_BUILD_PROPERTIES += 
                            ro.boot.storage_type=sd
    ifneq ($(BUILD_TARGET_FS),f2fs)
    TARGET_RECOVERY_FSTAB = device/fsl/sabresd_6dq/fstab_sd.freescale
    # build for ext4
    PRODUCT_COPY_FILES +=    
        device/fsl/sabresd_6dq/fstab_sd.freescale:root/fstab.freescale
    else
    TARGET_RECOVERY_FSTAB = device/fsl/sabresd_6dq/fstab_sd-f2fs.freescale
    # build for f2fs
    PRODUCT_COPY_FILES +=    
        device/fsl/sabresd_6dq/fstab_sd-f2fs.freescale:root/fstab.freescale
    endif # BUILD_TARGET_FS
    else
    ADDITIONAL_BUILD_PROPERTIES += 
                            ro.boot.storage_type=emmc
    ifneq ($(BUILD_TARGET_FS),f2fs)
    TARGET_RECOVERY_FSTAB = device/fsl/sabresd_6dq/fstab.freescale
    # build for ext4
    PRODUCT_COPY_FILES +=    
        device/fsl/sabresd_6dq/fstab.freescale:root/fstab.freescale
    else
    TARGET_RECOVERY_FSTAB = device/fsl/sabresd_6dq/fstab-f2fs.freescale
    # build for f2fs
    PRODUCT_COPY_FILES +=    
        device/fsl/sabresd_6dq/fstab-f2fs.freescale:root/fstab.freescale
    endif # BUILD_TARGET_FS
    endif # BUILD_TARGET_DEVICE

    可以看出,不同介质使用不同的文件系统

     

     可以知道我们的fstab为:device/fsl/sabresd_6dq/fstab.freescale

    打开device/fsl/sabresd_6dq/fstab.freescale

    # Android fstab file.
    #<src>                                                  <mnt_point>         <type>    <mnt_flags and options>                       <fs_mgr_flags>
    # The filesystem that contains the filesystem checker binary (typically /system) cannot
    # specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
    
    /devices/soc0/soc/2100000.aips-bus/2198000.usdhc/mmc_host* auto auto defaults voldmanaged=sdcard:auto,encryptable=userdata
    /devices/soc0/soc/2100000.aips-bus/2184000.usb/ci_hdrc.0*  auto auto defaults voldmanaged=usb:auto,encryptable=userdata
    /devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1*  auto auto defaults voldmanaged=usb1:auto,encryptable=userdata
    /dev/block/mmcblk3p5    /system      ext4    ro,barrier=1                                                                               wait,verify
    /dev/block/mmcblk3p4    /data        ext4    nosuid,nodev,nodiratime,noatime,nomblk_io_submit,noauto_da_alloc,errors=panic    wait,encryptable=/dev/block/mmcblk3p9
    /dev/block/mmcblk3p6    /cache       ext4    nosuid,nodev,nomblk_io_submit                                                    wait
    /dev/block/mmcblk3p7    /device      ext4    ro,nosuid,nodev                                                                  wait
    /dev/block/mmcblk3p1    /boot        emmc    defaults                                                                         defaults
    /dev/block/mmcblk3p2    /recovery    emmc    defaults                                                                         defaults
    /dev/block/mmcblk3p8    /misc        emmc    defaults                                                                         defaults
    /dev/block/mmcblk3boot0 /bootloader  emmc    defaults                                                                         defaults
    /dev/block/zram0 none swap defaults zramsize=314572800

    修改上面红色的ro为rw

    修改后烧录,可以看见确实修改了

    2. 修改系统层文件属性

    在源码中的属性跟编译后在out目录中的属性有可能是不一样的,即使是通过脚本复制过去的。

    比如在/system/bin下就可执行,但是在/out/xxx/system/etc下就不能直接通过chmod修改。想要修改必须去修改代码;

    详细可见canopen的移植到Android6.0的第4.4节

    3. 修改框架层文件属性(framework层)(未看,用到再写)

    http://blog.csdn.net/xieyan0811/article/details/6083019?reload

    4. 修改应用层文件属性

  • 相关阅读:
    Django【进阶篇-缓存类型】
    深度剖析Kubernetes API Server三部曲
    深度剖析Kubernetes API Server三部曲
    深度剖析Kubernetes API Server三部曲
    Istio技术与实践03:最佳实践之sidecar自动注入
    原来你是这样的PaaS!
    5分钟APIG实战: 使用Rust语言快速构建API能力开放
    Log4J日志配置详解
    cookie是如何保存到客户端,又是如何发送到服务端
    session cookie
  • 原文地址:https://www.cnblogs.com/maogefff/p/7985312.html
Copyright © 2011-2022 走看看