1. 程式人生 > 實用技巧 >檔案開放許可權

檔案開放許可權

轉載: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 使用者讀寫