背景:手机有些工具需要用 root 权限。but 手机 root 或者装 magisk 后银行类 app 就不让用了。因此产生了一个不成熟的想法,我先拿到 root 权限,然后我把需要 root 权限的应用的 linux 用户修改成 root 组。然后我再移除手机 root 权限。这特喵的不就完美解决了么。
想到这里立马动手开始尝试,通过 adb shell 进入手机命令行,然后 ls -AU 查看 apk 对应的用户,然后修改组
wtf fk ,木有 usermod 命令,然后 cat /etc/group,也木有这个文件
接着再 busybox --help,也没有看到 usermod 命令
最终,陷入绝望,有木有大佬解答下,还有其他办法修改用户组吗
1
Juszoe 2020-08-17 10:26:32 +08:00 via Android
chown
|
2
Juszoe 2020-08-17 10:28:24 +08:00 via Android
看错了,原来要修改用户,无视我的回答吧
|
3
codehz 2020-08-17 10:28:56 +08:00
你在异想天开
先不说用 root 的 app 能不能支持这种情况 就说你改用户组这事就不可能,android 的用户机制是特殊设计的,app 所属的用户和组都是直接代码产生的(意思是 bionic 直接根据数字映射一个名字,让 top 里看着不会一堆数字,app 用户和组的关系也是代码写死的;每个 app 运行前会直接 setuid 和 setgid 到特定数字,和名字没有半毛钱关系),不由文件控制。。 |
5
creedowl 2020-08-17 11:14:38 +08:00 via Android
把银行 app 加到 magisk hide 里面就能用了
|
6
ysc3839 2020-08-17 12:14:37 +08:00
没记错的话 Linux (Unix) 内核本身就没有“用户列表”的机制,/etc/passwd 等用户列表其实是相关命令行工具处理的,Linux 内核只是保存 uid 和 gid 。
另外,就你说的把 app 对应用户加入 root 组的方案,不可行的点有几个: 1. 没记错的话 Linux (Unix) 内核有限制,一个进程运行时只能由 root 降权为其他用户,不能提权为 root,要提权的话只能通过创建新进程的方式 (Unix 文件有个 SUID flag,开启后当创建新进程的时候,内核会把新进程的用户和组设置成文件所属的用户和组)。因此大多数 app 调用 root 权限也是通过创建新进程来实现的,创建的这个新进程是 root 工具提供的 "su" 程序。结果是你没办法移除 root 工具,除非修改这个 app 的工作方式。 2. 许多需要 root 权限的接口,是通过检测 uid 是否为某几个特定 uid 实现的,不一定会检测用户组。 3. 解决以上两个问题之后,还可能存在的问题是楼上所说的,你没有办法通过修改文件的方法来控制系统以什么用户或组运行 app,可能要修改代码。 最后说个题外话,iOS 越狱后如果 app 需要 root 权限,确实是让自己以 root 身份运行的。把 app 安装成系统 app,就不会受沙盒限制了,但是仍然是以普通用户运行的,再配合上面提到的 SUID,就可以以 root 身份运行了。 |
8
sadfQED2 OP @creedowl 除了银行类 app,还有一些游戏装了 magisk 也不能用,而且加 hide,改包名等等都不好使
|
9
iamxiaoq 2021-03-08 11:10:52 +08:00
哈哈,跟楼主想法一样,流下了没有技术的眼泪
|
10
iamxiaoq 2021-03-08 11:11:25 +08:00
楼主能说下后续方案?
|