做系统开发,有时候需要读取某些原生文件内容,当权限不足时,一般做法是:
- 使用
chmod
命令修改文件权限; - 修改目标文件的默认权限
1.使用 chmod
命令修改文件权限
使用代码执行 chmod
命令,
private void chmodFile(File destFile) {
try {
String command = "chmod 666 " + destFile.getAbsolutePath();
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command);
} catch (IOException e) {
e.printStackTrace();
}
}
如果是 app 自己创建的的文件,一般没问题;
如果目标文件是编译后产生的文件,可能需要系统权限才能操作;
如果目标文件是以只读方式挂载的,则此方法会失效;
2.修改目标文件的默认权限
2.1 修改 system/core/libcutils/fs_config.c
文件,如将 vendor/build.prop
文件权限由 600
改为 644
,使其可读可写,
static const struct fs_path_config android_files[] = {
//省略部分代码
- { 00600, AID_ROOT, AID_ROOT, 0, "vendor/build.prop" },
+ { 00644, AID_ROOT, AID_ROOT, 0, "vendor/build.prop" },
//省略部分代码
}
2.2 修改 device/xxx/xxx/init.m7221.rc
文件,如 chown
修改权限组, chmod
修改权限值,
on boot
+ chown system system /test/test.txt
+ chmod 0777 /test/test.txt
在如下文件中也可以添加类似修改
device/xxx/xxx/init.rc
system/core/rootdir/init.rc