当前位置: 首页 > news >正文

SELinux 介绍

SELinux

SEAndroid:Security-Enhanced Android
SEAndroid 是 SELinux(Security-Enhanced Linux) 在 Android 系统中的实现,SELinux 是一个强制访问控制(MAC)系统,SEAndroid 将其引入以加强 Android 的安全性,主要通过限制应用和系统组件的权限范围,减少安全漏洞被利用的可能性。

SELinux:Security-Enhanced Linux。

总结:selinux 是用来做权限控制的

SELinux 体验

现在,模拟工作中的一个小需求,对一个设备节点进行操作

#include <unistd.h> #include <sys/types.h> #include<stdio.h> #include <string.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #define LOG_TAG "HELLO" #include <log/log.h> int main(int argc, char *argv[]) { int ret = -1; int fd; char *devpath = "/dev/sedemo_dev_dzz"; char *data = "This is a test content for sedemo\r\n"; fd = open(devpath, O_RDWR); if(fd < 0) { ALOGE("open device:%s fail!", devpath); return -1; } ret = write(fd, data, strlen(data)); if(ret < 0) { ALOGE("write data fail"); return -1; } while(1){ usleep(1000); } close(fd); return 0; }

这段代码,看起来应该是没啥难度,对 dev 文件下面的 sedemo_dev 进行写入一句话。
如果你感觉到有难度,你需要去补一下linux 文件操作相关知识了!!!

源码有了,我们还需要编写一个编译文件,才能编译出能放到android 虚拟机上运行的可执行文件。

LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ main.c LOCAL_SHARED_LIBRARIES := \ libcutils \ liblog \ LOCAL_CFLAGS += -Wno-unused-parameter LOCAL_PROPRIETARY_MODULE:= true LOCAL_MODULE:= sedemo_dzz include $(BUILD_EXECUTABLE)

源代码命名为:main.c, 编译脚本:Android.mk,统一放在

aosp/device/dzz_test_se/src


进行编译:

source build/envsetup.sh lunch sdk_phone_x86_64-eng mmm device/dzz_test_se/src/ -j12


编译成功,push 到android 虚拟机上运行;push 前先解释一下Android.mk脚本

LOCAL_SHARED_LIBRARIES := \ libcutils \ liblog \ 意思是: libcutils:Android C 工具库,提供基本系统功能 liblog:Android 日志库,用于日志输出 LOCAL_PROPRIETARY_MODULE:= true 标记为专有模块(vendor 模块),也就是编译在 vendor 目录下 LOCAL_MODULE:= sedemo_dzz 作用:定义模块名称


接下来push 到android 虚拟机上运行

adb push out/target/product/emulator_x86_64/vendor/bin/sedemo_dzz /vendor/bin/


报错意思是:/vendor 分区在运行的 Android 系统中是只读的,重新挂载 /vendor 为可读写即可

adb root adb remount


登录android 设备查看

上面代码是对char *devpath = "/dev/sedemo_dev_dzz";这个目录下的设备节点进行操作,我们还需在这个目录下传教一个文件

运行可执行程序

runcon u:r:sedemo_dt:s0 /vendor/bin/sedemo

其实是用 /vendor/bin/sedemo 运行的,前面加那些内容是我发现高版本的android ,竟然能突破se 规则,然后加的 runcon u:r:sedemo_dt:s0,低版本安卓和高版本安卓加上这句话直接运行,也会出现如下:

意思就是没有权限,于是我询问了deepseek,找到了解决方向

这下我终于明白了,开头selinux的作用了。

接下来开始 SELinux 相关的学习~~~

http://www.cnnetsun.cn/news/27265.html

相关文章:

  • Selinux权限的检测
  • 常见报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.example.dem
  • 甲骨文AI投资支出激增致股价创24年最大跌幅
  • TinyMCE4粘贴word超链接自动解析域名
  • TinyMCE6处理微信公众号音频视频嵌入
  • 昇腾 Ascend 自定义算子开发全攻略:从 TBE DSL 到 AICPU,打通 AI 加速最后一公里
  • 当电机开始“唱歌“:NVH工程师的降噪日常
  • AI界的“经济适用男“!80亿参数小模型完胜GPT-5,成本降低70%,CSDN程序员必藏的智能调度方案
  • FPGA教程系列-Vivado Aurora 8B/10B 例程解读
  • 227827827
  • MCU的启动流程你了解么?
  • 逻辑回归(Logistic Regression)进行多分类的实战
  • RNN(循环神经网络)原理
  • 人机协同重构创作生态——生成式AI赋能内容产业的变革与思考
  • Java 小白求职者在互联网大厂的面试实录:从 Spring Boot 到微服务架构
  • V助手舆情分析智能体:重塑舆情分析,从“人找信息”到“信息为人”
  • 连接2026:十款远程控制软件真实力横评与选择指南
  • 计算机毕业设计springboot基于Spark++Vue.js的学生管理系统 Spark+Vue 高校学生综合信息管理平台 基于 SpringBoot+Spark+Vue 的全链路学生事务中心
  • JavaScript 集合操作的哈希碰撞:攻击者如何利用特殊 Key 导致 Map/Set 性能降级到 O(N)
  • 为什么 C盘空间会莫名其妙减少(即使没装新软件)?
  • 17、深入理解 Linux 文件系统机制与结构
  • 29、Linux 软件使用与故障排除指南
  • 从入门到转行:网络安全自学与跳槽的终极建议
  • 网络安全小白自学之路,别拜师了,求人不如求己_网络安全小白怎么自学
  • 从系统运维到网络安全工程师,8个月转行真实经验分享!
  • 算法系列(Algorithm)- 快速排序
  • RobotStudio2025全功能授权
  • IsaacLab中UR机械臂与Robotiq夹爪的5大配置难点与解决方案
  • cmark Markdown解析器终极指南:从入门到精通
  • 4-bit量化FLUX模型:让专业AI绘图走进寻常百姓家