檔案開放許可權
阿新 • • 發佈:2020-07-16
轉載:https://www.jianshu.com/p/058970ae46fd
SEAndroid 為Sys裝置節點開放訪問(讀或寫)許可權方法(如:sys/class/leds/red_aux/brightness)
1.APP層寫節點之前,必須確保當前應用程式能夠有許可權去讀寫
否則是無法正常寫入的,如果應用沒有許可權寫裝置節點,首先進入原始碼目錄中system/core/rootdir/init.rc;
修改內容如下:
//開放節點讓系統程序可以訪問
chown system system /sys/class/leds/red_aux/brightness
//修改裝置節點可讀可寫
chmod 0666 /sys/class/leds/red_aux/brightness
2.修改file.te
進入/device/XXX/sepolicy/common
找到file.te檔案,加入以下的型別宣告:
定義selinux type
# leds file
type sysfs_ledred_leds, fs_type, sysfs_type;
3.修改file_contexts
進入/device/XXX/sepolicy/common
找到修改file_contexts檔案
繫結sysfs_ledred_leds到對應的實際節點,加入以下宣告:
/sys/devices/soc/75b5000.i2c/i2c-7/7-0045/leds/red_aux/brightness u:object_r:sysfs_ledred_leds:s0
4.修改sysetem_app.te檔案
找到修改sysetem_app.te檔案
加入以下許可權宣告:
allow system_app sysfs_ledred_leds:file rw_file_perms;
//rw_file_perms代表讀寫許可權,該話的意思事允許system_app程序能夠擁有對sysfs_ledred_leds的這個字元裝置的讀寫許可權;如果system_server 則表示是system_server程序
allow system_app sysfs_ledred_leds:file { create open read setattr write };
注意:以上的sysfs_ledred_leds必須與file.te檔案中宣告的檔案型別、名稱必須一致。
5.APP
APP 配置為系統APP
在AndroidMainefest.xml中配置
android:sharedUserId=”android.uid.system”;
write_init("/sys/class/leds/red_aux/brightness", 255);
6.kernel 中sysfs 讀寫許可權
S_IWUGO 全部使用者讀寫
S_IWUSR 使用者讀寫