2017-04-25 43 views
3

我想EXCUTE開機可執行目標板上採用Android 5.1所以我在init.rc補充一點:初始警告:服務myservice需要定義一個SELinux域。請修正

on boot 
    start myservice 

service myservice /system/bin/myservice 
    #class main 
    user root 
    group root 
    #oneshot 

我沒有拆包和重新包裝的工作。
進行更改時,然而,屏幕保持打印:

init warning: Service myservice needs a SELinux domain defined. Please fix. 
type=1400 ... avc:denied ... scontext ... tcontext ... #some annoying warning messages like this 

SELinux的似乎是一個巨大的工程給我。我只是想避免這種情況。我嘗試兩種方法:

1. setenv kernelargs 'console=ttyS0,115200n8 rootdelay=1 selinux=0' and saveenv 
2. set enforce 0 

對於方法1,printenv給出結果:

kernelargs=console=ttyS0,115200n8 rootdelay=1 selinux=0 

所以你看,已經作了修改。但警告消息在重新啓動後不斷打印。
對於方法2,它說:

Could not set enforce status. Permission denied. 

所以我現在被困在兩難困境不知道哪裏去了。我的問題:

    1. 任何人都知道如何禁用或Android的設置許可模式?
    1. 如果我想爲新服務定義域,應該修改哪些文件?

此外,ls -Z /system/bin/myservice給出了這樣的:

u:object_r:system_file:s0 

回答

1
  1. 需要su切換到設置許可模式。或者您需要源代碼來禁用SELinux,例如在內核配置中禁用SELinux,或者在device/vendor_name/product_name/BoardConfig.mk中的BOARD_KERNEL_CMDLINE中禁用SELinux。

  2. 如果您有源代碼,您可以根據需要定義新域。

請參考Android的官方文件:https://source.android.com/security/selinux/device-policy

部分:由於我的用戶名是root,所以我覺得我有超級用戶權限標籤新的服務和地址否認

+0

。我的同事告訴我,我仍然需要蘇。 su後,我成功設置了寬容模式。雖然對於另一個問題,在我看來,定義一個新域是一個非常棘手的問題:源代碼應該被修改,android應該被重新編譯。我的整個項目都應該重新編譯。 – dudu