Reputation: 10083
Following the example given in this post, I added these lines to /init.rc:
on property:dev.bootcomplete=1
start boot_handler
service boot_handler /system/bin/bc_handler.sh
class main
user root
group root
disabled
oneshot
And this /system/bin/bc_handler.sh:
#!/system/bin/sh
echo hi > /data/local/hi.txt
I'm building Android 8.0 for the emulator. When the system starts, I can see that the script didn't run, and this message is seen in the logs:
[ 217.280853] init: service boot_handler does not have a SELinux domain defined
I tried changing my service to look like this:
service boot_handler /system/bin/sh /system/bin/bc_handler.sh
class main
user root
group root
disabled
oneshot
seclabel u:r:shell:s0
and now the error is
init: Service 'boot_handler' (pid 1729) killed by signal 1
Is there any documentation on how one adds a new service to Android under SELinux? Or documentation on how to disable SELinux on Android? I've been googling for hours, and all of the information I'm finding seems to be obsolete.
Upvotes: 2
Views: 15618
Reputation: 109
You can disable SELinux by setting permissive mode on your running platform
In permissive mode, selinux will only dump warning message
By default, it's in enforcing mode, where any SELinux violation will be denied.
To add a service, you should add file context in file_context, and write a .te file for your service
Here is a basic example and you can dig into more about SELinux
Upvotes: 2