Android有的命令不需要root权限,有的命令需要root权限是如何实现的

Android有的命令不需要root权限,有的命令需要root权限是如何实现的

bash 复制代码
例如:ls命令非root下,可以正常执行,而btconfig命令非root下不能被看到,所以不能被执行,需要root才可以。

# setenforce 0  // 临时关闭selinux 能看到btconfig
# setenforce 1  // 打开selinux

1, ls命令非root下,可以正常执行
kalama:/system/bin # ls -l ls
lrwxr-xr-x 1 root shell 6 2009-01-01 00:00 ls -> toybox
kalama:/system/bin # ls -lZ ls                                                                                                
lrwxr-xr-x 1 root shell u:object_r:system_file:s0  6 2009-01-01 00:00 ls -> toybox
kalama:/system/bin # ls -lZ /system/bin/toybox  // 查看toybox的selinux的上下文
-rwxr-xr-x 1 root shell u:object_r:toolbox_exec:s0  510384 2009-01-01 00:00 toybox

2, ls命令非root下,可以正常执行,原因是配置了如下selinux权限
在源代码的system/sepolicy,执行grep -r "toolbox_exec" 搜索
private/shell.te:allow shell toolbox_exec:file rx_file_perms;


3, btconfig命名非root下不能正常执行,需要root才可以
127|kalama:/ $ btconfig
/system/bin/sh: btconfig: inaccessible or not found

127|kalama:/ $ su
1|kalama:/system/bin # which btconfig                                                                                         
/vendor/bin/btconfig
kalama:/system/bin # ls -lZ /vendor/bin/btconfig
-rwxr-xr-x 1 root shell u:object_r:vendor_file:s0  123496 2009-01-01 00:00 /vendor/bin/btconfig

4, 修改btconfig上下文为toolbox_exec,使其能在普通用户下能看到。
adb root && adb remount
# chcon u:object_r:toolbox_exec:s0 /vendor/bin/btconfig
adb reboot重启后,在非root命令下,可以看到和使用该命令了

5, 查看selinux上下文是toolbox_exec的命令
kalama:/system/bin # ls -lZ | grep toolbox_exec                                                                               
-rwxr-xr-x 1 root shell u:object_r:toolbox_exec:s0                    33680 2009-01-01 00:00 mini-keyctl
-rwxr-xr-x 1 root shell u:object_r:toolbox_exec:s0                   126560 2009-01-01 00:00 toolbox
-rwxr-xr-x 1 root shell u:object_r:toolbox_exec:s0                   510384 2009-01-01 00:00 toybox

6, 修改selinux权限和linux用户文件权限常用命令
chmod 666 /dev/hraw0
chown system ...
chgrp system ...
$ su 切换到root权限,即切换到root用户下
adb root && adb remount
adb unroot
修改selinux上下文命令:chcon restorecon
修改linux用户权限命令:chmod chown chgrp

总结:
如果在root权限下,某命令可以正常执行,
而非root权限下,某命令能看到但执行失败或者某命令看不到,所以执行不了。
原因是:selinux权限和linux用户权限配置导致的。
如果想要把自己添加的命令暴露给App使用,只需要配置相应的selinux权限和linux文件权限即可。
执行su命令切换到root权限,本质上是切换到root用户。
非root权限下,即是普通用户。
相关推荐
Meteors.4 分钟前
安卓进阶——OpenGL ES
android
椰羊sqrt2 小时前
CVE-2025-4334 深度分析:WordPress wp-registration 插件权限提升漏洞
android·开发语言·okhttp·网络安全
2501_916008892 小时前
金融类 App 加密加固方法,多工具组合的工程化实践(金融级别/IPA 加固/无源码落地/Ipa Guard + 流水线)
android·ios·金融·小程序·uni-app·iphone·webview
sun0077002 小时前
Android设备推送traceroute命令
android
来来走走2 小时前
Android开发(Kotlin) 高阶函数、内联函数
android·开发语言·kotlin
2501_915921432 小时前
Fastlane 结合 开心上架(Appuploader)命令行版本实现跨平台上传发布 iOS App 免 Mac 自动化上架实战全解析
android·macos·ios·小程序·uni-app·自动化·iphone
雨白3 小时前
重识 Java IO、NIO 与 OkIO
android·java
啦啦9117144 小时前
Niagara Launcher 全新Android桌面启动器!给手机换个门面!
android·智能手机
游戏开发爱好者84 小时前
iOS 上架要求全解析,App Store 审核标准、开发者准备事项与开心上架(Appuploader)跨平台免 Mac 实战指南
android·macos·ios·小程序·uni-app·iphone·webview
xrkhy4 小时前
canal1.1.8+mysql8.0+jdk17+redis的使用
android·redis·adb