从特权应用授予 \system\etc 写入权限 [打开失败:EROFS]

Grant \system\etc write access from a priviligied app [open failed: EROFS]

我在编辑 \system\etc\ 下的 libnfc-nxp.conf 文件时遇到问题,我收到以下错误。

/system/etc/libnfc-nxp.conf: open failed: EROFS (Read-only file system)

上下文:我可以访问 AOSP 并且可以修改 OS 上的所有内容。 我想开发一个可以修改这个文件的 Android 应用程序。此应用程序将在内部使用特定的 ENG OS 版本。

所以,我知道应用程序无法访问 /system/etc/。 为了授予此访问权限,我使用系统 sharedUserID 并将应用程序签名为 system_app。现在,我有一个特权应用程序

u:r:system_app:s0 system

默认情况下 /system/etc/libnfc-nxp.conf 权限是

-rw-r--r-- root root libnfc-nxp.conf

因此,我通过 adb 进行了测试,以使用 rw 重新挂载 /system 分区,对文件进行 chown 和 chmod

chown system:system libnfc-nxp.conf

chmod 666 libnfc-nxp.conf

我还有同样的问题.. 因此,我希望更新 SElinux 以授予 system_app 对 \system\etc.

下的所有文件的 {open write} 访问权限

我在device/xxx/sepolicy下修改了system_app.te

userdebug_or_eng(`

allow system_app sysfs:file rw_file_perms;

allow system_app system_file:file {create open read write getattr setattr };

')

我做了测试,还是有同样的问题。 我做了一轮我想到的可能的想法。你有什么建议吗? 它仍然是 SELinux 问题并且因为缺少某些东西..我不熟悉 SELinux?

欢迎任何帮助。 谢谢。

江铃汽车,

首先,你真的重装了/system/吗?如果没有,运行 这个命令看看是否有帮助(注意:这将在重启后重置): adb shell mount -o remount,rw /system

这是允许访问 r/w 系统分区的关键。

如果您仍然遇到问题,请使用以下命令禁用 SE Linux 的强制模式: adb shell setenforce 0

这应该让您获得一点通过。您应该在 Android Studio 中监控应用程序的调试,看看它是否确实需要其他权限。

我还没有解决访问问题。 最后,我改变了处理方式并更新了 NFC 服务以查看 /sdcard/ 文件夹(而不是 /system/etc/)上的 conf 文件。它避免了权限问题。

感谢您的帮助。