1. 修改system/core/libcutils/fs_config.cpp,加入对应的路径即可
//部分文件夹的权限static const struct fs_path_config android_dirs[] = {// clang-format off{ 00770, AID_SYSTEM, AID_CACHE, 0, "cache" },{ 00555, AID_ROOT, AID_ROOT, 0, "config" },{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data/app" },{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data/app-private" },{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data/app-ephemeral" },{ 00771, AID_ROOT, AID_ROOT, 0, "data/dalvik-cache" },{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data/data" },{ 00771, AID_SHELL, AID_SHELL, 0, "data/local/tmp" },{ 00771, AID_SHELL, AID_SHELL, 0, "data/local" },{ 00770, AID_DHCP, AID_DHCP, 0, "data/misc/dhcp" },{ 00771, AID_SHARED_RELRO, AID_SHARED_RELRO, 0, "data/misc/shared_relro" },{ 01771, AID_SYSTEM, AID_MISC, 0, "data/misc" },{ 00775, AID_MEDIA_RW, AID_MEDIA_RW, 0, "data/media/Music" },{ 00775, AID_MEDIA_RW, AID_MEDIA_RW, 0, "data/media" },{ 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest" },{ 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest64" },{ 00775, AID_ROOT, AID_ROOT, 0, "data/preloads" },{ 00771, AID_SYSTEM, AID_SYSTEM, 0, "data" },{ 00755, AID_ROOT, AID_SYSTEM, 0, "mnt" },{ 00755, AID_ROOT, AID_SHELL, 0, "product/bin" },{ 00750, AID_ROOT, AID_SHELL, 0, "sbin" },{ 00777, AID_ROOT, AID_ROOT, 0, "sdcard" },{ 00751, AID_ROOT, AID_SDCARD_R, 0, "storage" },{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin" },{ 00755, AID_ROOT, AID_ROOT, 0, "system/etc/ppp" },{ 00755, AID_ROOT, AID_SHELL, 0, "system/vendor" },{ 00755, AID_ROOT, AID_SHELL, 0, "system/xbin" },{ 00755, AID_ROOT, AID_SHELL, 0, "vendor" },{ 00755, AID_ROOT, AID_ROOT, 0, 0 },// clang-format on
};//部分文件的权限static const struct fs_path_config android_files[] = {// clang-format off{ 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app/*" },{ 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app-ephemeral/*" },{ 00644, AID_SYSTEM, AID_SYSTEM, 0, "data/app-private/*" },{ 00644, AID_APP, AID_APP, 0, "data/data/*" },{ 00644, AID_MEDIA_RW, AID_MEDIA_RW, 0, "data/media/*" },{ 00640, AID_ROOT, AID_SHELL, 0, "data/nativetest/tests.txt" },{ 00640, AID_ROOT, AID_SHELL, 0, "data/nativetest64/tests.txt" },{ 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest/*" },{ 00750, AID_ROOT, AID_SHELL, 0, "data/nativetest64/*" },{ 00600, AID_ROOT, AID_ROOT, 0, "default.prop" }, // legacy{ 00600, AID_ROOT, AID_ROOT, 0, "system/etc/prop.default" },{ 00600, AID_ROOT, AID_ROOT, 0, "odm/build.prop" },{ 00600, AID_ROOT, AID_ROOT, 0, "odm/default.prop" },{ 00444, AID_ROOT, AID_ROOT, 0, odm_conf_dir + 1 },{ 00444, AID_ROOT, AID_ROOT, 0, odm_conf_file + 1 },{ 00444, AID_ROOT, AID_ROOT, 0, oem_conf_dir + 1 },{ 00444, AID_ROOT, AID_ROOT, 0, oem_conf_file + 1 },{ 00600, AID_ROOT, AID_ROOT, 0, "product/build.prop" },{ 00750, AID_ROOT, AID_SHELL, 0, "sbin/fs_mgr" },{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/crash_dump32" },{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/crash_dump64" },{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/debuggerd" },{ 00750, AID_ROOT, AID_ROOT, 0, "system/bin/install-recovery.sh" },{ 00700, AID_ROOT, AID_ROOT, 0, "system/bin/secilc" },{ 00750, AID_ROOT, AID_ROOT, 0, "system/bin/uncrypt" },{ 00600, AID_ROOT, AID_ROOT, 0, "system/build.prop" },{ 00444, AID_ROOT, AID_ROOT, 0, sys_conf_dir + 1 },{ 00444, AID_ROOT, AID_ROOT, 0, sys_conf_file + 1 },{ 00440, AID_ROOT, AID_SHELL, 0, "system/etc/init.goldfish.rc" },{ 00550, AID_ROOT, AID_SHELL, 0, "system/etc/init.goldfish.sh" },{ 00550, AID_ROOT, AID_SHELL, 0, "system/etc/init.ril" },{ 00555, AID_ROOT, AID_ROOT, 0, "system/etc/ppp/*" },{ 00555, AID_ROOT, AID_ROOT, 0, "system/etc/rc.*" },{ 00440, AID_ROOT, AID_ROOT, 0, "system/etc/recovery.img" },{ 00600, AID_ROOT, AID_ROOT, 0, "vendor/build.prop" },{ 00600, AID_ROOT, AID_ROOT, 0, "vendor/default.prop" },{ 00444, AID_ROOT, AID_ROOT, 0, ven_conf_dir + 1 },{ 00444, AID_ROOT, AID_ROOT, 0, ven_conf_file + 1 },// the following two files are INTENTIONALLY set-uid, but they// are NOT included on user builds.{ 06755, AID_ROOT, AID_ROOT, 0, "system/xbin/procmem" },{ 04750, AID_ROOT, AID_SHELL, 0, "system/xbin/su" },// the following files have enhanced capabilities and ARE included// in user builds.{ 00700, AID_SYSTEM, AID_SHELL, CAP_MASK_LONG(CAP_BLOCK_SUSPEND),"system/bin/inputflinger" },{ 00550, AID_LOGD, AID_LOGD, CAP_MASK_LONG(CAP_SYSLOG) |CAP_MASK_LONG(CAP_AUDIT_CONTROL) |CAP_MASK_LONG(CAP_SETGID),"system/bin/logd" },{ 00550, AID_SYSTEM, AID_LOG, CAP_MASK_LONG(CAP_SYSLOG),"system/bin/bootstat" },{ 00750, AID_ROOT, AID_SHELL, CAP_MASK_LONG(CAP_SETUID) |CAP_MASK_LONG(CAP_SETGID),"system/bin/run-as" },// Support FIFO scheduling mode in SurfaceFlinger.{ 00755, AID_SYSTEM, AID_GRAPHICS, CAP_MASK_LONG(CAP_SYS_NICE),"system/bin/surfaceflinger" },// generic defaults{ 00755, AID_ROOT, AID_ROOT, 0, "bin/*" },{ 00640, AID_ROOT, AID_SHELL, 0, "fstab.*" },{ 00750, AID_ROOT, AID_SHELL, 0, "init*" },{ 00755, AID_ROOT, AID_SHELL, 0, "product/bin/*" },{ 00750, AID_ROOT, AID_SHELL, 0, "sbin/*" },{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin/*" },{ 00755, AID_ROOT, AID_ROOT, 0, "system/lib/valgrind/*" },{ 00755, AID_ROOT, AID_ROOT, 0, "system/lib64/valgrind/*" },{ 00755, AID_ROOT, AID_SHELL, 0, "system/xbin/*" },{ 00755, AID_ROOT, AID_SHELL, 0, "vendor/bin/*" },{ 00755, AID_ROOT, AID_SHELL, 0, "vendor/xbin/*" },{ 00644, AID_ROOT, AID_ROOT, 0, 0 },// clang-format on
};
2. 参考patch
diff --git a/libcutils/fs_config.cpp b/libcutils/fs_config.cpp
index 5b79b1d7d..913922056 100644
--- a/libcutils/fs_config.cpp
+++ b/libcutils/fs_config.cpp
@@ -86,6 +86,7 @@ static const struct fs_path_config android_dirs[] = {
{ 00751, AID_ROOT, AID_SDCARD_R, 0, "storage" },
{ 00755, AID_ROOT, AID_SHELL, 0, "system/bin" },
{ 00755, AID_ROOT, AID_ROOT, 0, "system/etc/ppp" },
+ { 00400, AID_ROOT, AID_ROOT, 0, "system/etc/software_pack" },
{ 00755, AID_ROOT, AID_SHELL, 0, "system/vendor" },
{ 00755, AID_ROOT, AID_SHELL, 0, "system/xbin" },
{ 00755, AID_ROOT, AID_SHELL, 0, "vendor" },
3. 使用 ls -la 查看机器开机后 目录权限是这样的:
dr-------- 2 root root 4096 2024-11-21 15:16 software_pack