android selinux

關(guān)鍵字: android, selinux, getenforce, setenforce, audit2allow

20180817 tjy

轉(zhuǎn)載請注明出處

Android在4.3引入selinux, 當時工作上需要了解并解決一些selinux的問題, 這里總結(jié)一下涉及到的selinux的一些東西腻豌,不是普及性的文章焰檩, 只是記錄和穿針引線的作用。

  1. logcat日志

如果某些可執(zhí)行文件或者app或者文件訪問的selinux沒有設(shè)置好国旷, 會在logcat中打印一些類似的日志, 這個時候需要對這些異常添加selinux權(quán)限了。

01-15 09:38:34.248    35    35 I kworker/0:1: type=1400 audit(0.0:23): avc: denied { search } for name="/" dev="mmcblk0p34" ino=2 scontext=u:r:kernel:s0 tcontext=u:object_r:persist_file:s0 tclass=dir permissive=1
01-15 09:38:38.468  1382  1382 I iptables-wrappe: type=1400 audit(0.0:26): avc: denied { read write } for path="socket:[18709]" dev="sockfs" ino=18709 scontext=u:r:netutils_wrapper:s0 tcontext=u:r:netmgrd:s0 tclass=netlink_socket permissive=1
01-15 09:38:47.128   410   410 I HwBinder:410_2: type=1400 audit(0.0:27): avc: denied { read } for name="class" dev="sysfs" ino=10 scontext=u:r:hal-server:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=1
01-15 09:38:47.128   410   410 I HwBinder:410_2: type=1400 audit(0.0:28): avc: denied { open } for path="/sys/class" dev="sysfs" ino=10 scontext=u:r:hal-server:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=1
01-15 09:38:48.768   880   880 I BootAnimation: type=1400 audit(0.0:29): avc: denied { dac_override } for capability=1 scontext=u:r:bootanim:s0 tcontext=u:r:bootanim:s0 tclass=capability permissive=1
01-15 09:38:54.208  3214  3214 I m.android.phone: type=1400 audit(0.0:33): avc: denied { open } for path="/dev/__properties__/u:object_r:lab_prop:s0" dev="tmpfs" ino=9703 scontext=u:r:radio:s0 tcontext=u:object_r:lab_prop:s0 tclass=file permissive=1
  1. permissive 和 enforce

如上面的日志所示, 日志以 permissive=1結(jié)尾版姑,permissive=1 表示device處于permissive模式谎亩, 操作會被執(zhí)行,但是logcat會打印這些日志夭拌, 一般用來調(diào)試桶现。

如果手機當前處于enforce模式,則日志會以permissive=0結(jié)尾,日志里面描述的操作不會被執(zhí)行绵脯,調(diào)試添加selinux權(quán)限后份帐,需要在enforce模式下驗證結(jié)果噩凹。

  1. setenforce 和 getenforce

setenforce 0 設(shè)置device進入 enforce模式。
setenforce 1 設(shè)置device進入 permissive模式修己。
getenforce 查看當前處于何種模式尤辱。

device-name:/system/bin # getenforce
getenforce
Permissive
device-name:/system/bin # setenforce 1
setenforce 1
device-name:/system/bin # getenforce
getenforce
Enforcing
device-name:/system/bin #
  1. file context

在 android代碼中對可執(zhí)行文件/一般文件/app/sysfs 定義了file context娄涩, 即它們的selinux域,

#from http://androidxref.com/8.1.0_r33/xref/device/google/dragon/sepolicy/file_contexts

# block devices
/dev/block/platform/700b0600\.sdhci/by-name/UDA       u:object_r:userdata_block_device:s0
/dev/block/platform/700b0600\.sdhci/by-name/CAC       u:object_r:cache_block_device:s0
/dev/block/platform/700b0600\.sdhci/by-name/MD1       u:object_r:metadata_block_device:s0
/dev/block/platform/700b0600\.sdhci/by-name/APP       u:object_r:system_block_device:s0
/dev/block/platform/700b0600\.sdhci/by-name/PST       u:object_r:frp_block_device:s0
/dev/block/platform/700b0600\.sdhci/by-name/recovery  u:object_r:recovery_block_device:s0
/dev/block/platform/700b0600\.sdhci/by-name/KERN-A    u:object_r:boot_block_device:s0
/dev/block/platform/700b0600\.sdhci/by-name/KERN-B    u:object_r:boot_block_device:s0
/dev/block/platform/700b0600\.sdhci/by-name/MSC       u:object_r:misc_block_device:s0
/dev/block/zram0                                      u:object_r:swap_block_device:s0
/dev/block/mmcblk0rpmb                                u:object_r:rpmb_block_device:s0

# /dev
/dev/dri/card0                                  u:object_r:gpu_device:s0
/dev/dri/controlD64                             u:object_r:gpu_device:s0

# system executables
/system/bin/init_regions\.sh                    u:object_r:locale_exec:s0
/system/bin/tune-thermal-gov\.sh                u:object_r:thermal_gov_exec:s0
/system/bin/dump_bq25892\.sh                    u:object_r:dump_bq25892_exec:s0
/system/bin/touchfwup\.sh                       u:object_r:touch_fw_update_exec:s0
/system/bin/rmi4update                          u:object_r:rmi4update_exec:s0
/system/bin/fwtool                              u:object_r:fwtool_exec:s0

# vendor executables
/vendor/bin/hw/android\.hardware\.dumpstate@1\.0-service.dragon      u:object_r:hal_dumpstate_impl_exec:s0

# logs for touch firmware update
/data/misc/touchfwup(/.*)?                      u:object_r:touch_fw_update_log_file:s0

selinux域里面又定義了selinux的權(quán)限,權(quán)限包含read/write/...舀锨。

#from http://androidxref.com/8.1.0_r33/xref/device/google/dragon/sepolicy/fwtool.te

# permissions for /system/bin/fwtool
type fwtool, domain, device_domain_deprecated;
type fwtool_exec, exec_type, file_type;

init_daemon_domain(fwtool)

# access /dev/mtd/*
allow fwtool mtd_device:dir search;
allow fwtool mtd_device:chr_file rw_file_perms;
  1. ls -Z

對于可執(zhí)行文件, 通過 ls -Z 命令可以查看其selinux域。

device-name:/system/bin # ls -Z
u:object_r:system_file:s0           acpi 
u:object_r:adbd_exec:s0             adbd 
u:object_r:system_file:s0           am   
u:object_r:system_file:s0           app_process
u:object_r:zygote_exec:s0           app_process32
u:object_r:system_file:s0           applypatch
u:object_r:system_file:s0           appops
u:object_r:system_file:s0           appwidget
u:object_r:system_file:s0           arping
u:object_r:system_file:s0           art  
u:object_r:atrace_exec:s0           atrace
u:object_r:audioserver_exec:s0      audioserver
u:object_r:system_file:s0           base64
u:object_r:system_file:s0           basename
u:object_r:system_file:s0           bcc  
u:object_r:blkid_exec:s0            blkid 
u:object_r:system_file:s0           blockdev
u:object_r:system_file:s0           bmgr 
u:object_r:bootanim_exec:s0         bootanimation
u:object_r:system_file:s0           bootctl
u:object_r:bootstat_exec:s0         bootstat
u:object_r:system_file:s0           brctl 
u:object_r:bt_logger_exec:s0        bt_logger
u:object_r:system_file:s0           bu   
u:object_r:system_file:s0           bunzip2
u:object_r:system_file:s0           bzcat 
u:object_r:system_file:s0           bzip2 
u:object_r:system_file:s0           cal  
u:object_r:system_file:s0           cat  
u:object_r:system_file:s0           chcon 
u:object_r:system_file:s0           chgrp 
u:object_r:system_file:s0           chmod 
u:object_r:system_file:s0           chown 
u:object_r:system_file:s0           chroot
u:object_r:system_file:s0           chrt 
...

那么問題來了,源碼編譯可執(zhí)行文件的時候贴铜, 沒有對這個可執(zhí)行文件定義selinux域轩褐,然后添加了可執(zhí)行文件的selinux域,編譯boot.img(selinux域是放在boot.img里面的,而可執(zhí)行文件一般放在system.img或者vendor.img),把boot.img更新到手機里面(這種情況即更新了selinux域的定義蓄髓,但是沒有更新可執(zhí)行文件)匾竿, 此時昵慌,更新的selinux域不會在這個可執(zhí)行文件上面生效淳蔼。
我記得當時在集成一個feature的時候犯了這個錯誤存皂。

  1. audit2allow

面對logcat日志里面一對selinux異常娩怎,挨個寫allow語句太麻煩了,可以試試audit2allow工具, 具體用法請咨詢百度袍啡。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市督惰,隨后出現(xiàn)的幾起案子崖疤,更是在濱河造成了極大的恐慌,老刑警劉巖谈火,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糯耍,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜓堕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門错忱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掷倔,“玉大人浪汪,你說我怎么就攤上這事∪せ荩” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵界赔,是天一觀的道長丢习。 經(jīng)常有香客問我,道長淮悼,這世上最難降的妖魔是什么咐低? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮袜腥,結(jié)果婚禮上见擦,老公的妹妹穿的比我還像新娘。我一直安慰自己羹令,他們只是感情好鲤屡,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著福侈,像睡著了一般酒来。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上肪凛,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天堰汉,我揣著相機與錄音辽社,去河邊找鬼。 笑死翘鸭,一個胖子當著我的面吹牛滴铅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播就乓,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼汉匙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了档址?” 一聲冷哼從身側(cè)響起盹兢,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎守伸,沒想到半個月后绎秒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡尼摹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年见芹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蠢涝。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡玄呛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出和二,到底是詐尸還是另有隱情徘铝,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布惯吕,位于F島的核電站惕它,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏废登。R本人自食惡果不足惜淹魄,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堡距。 院中可真熱鬧甲锡,春花似錦、人聲如沸羽戒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽易稠。三九已至疚俱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缩多,已是汗流浹背呆奕。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工养晋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人梁钾。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓绳泉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親姆泻。 傳聞我的和親對象是個殘疾皇子零酪,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容