Pik*_*lor 5 android android-permissions
我有一个使用 JNI 库的 Android 活动,该库使用 netlink 命令来配置网络接口(在本例中为 socketcan 接口)。如果我运行该活动,网络接口配置将失败并显示来自 RTNETLINK的EPERM错误。失败的命令需要CAP_NET_ADMIN功能才能成功完成。这样运行的代码为根成功,并且还运行为根,然后限制该功能仅CAP_NET_ADMIN使用capset。
我向应用程序清单添加了以下权限,这给我的印象是我的进程将获得 NET_ADMIN 功能:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NET_ADMIN" />
Run Code Online (Sandbox Code Playgroud)
这将进程置于inet和net_admin组中,但该进程未收到 CAP_NET_ADMIN 功能,导致 netlink 命令因 EPERM 而失败。
在我对这个主题进行的各种搜索中,我发现了应该应用该功能的提示。例如,来自http://elinux.org/Android_Security
#define GID Capability
AID_NET_BT_ADMIN 3001 Can create an RFCOMM, SCO, or L2CAPP Bluetooth socket
AID_NET_BT 3002 Can create a Bluetooth socket
AID_INET 3003 Can create IPv4 or IPv6 socket
AID_NET_RAW 3004 Can create certain kinds of IPv4 sockets??
AID_NET_ADMIN* 3005 Allow CAP_NET_ADMIN permissions for process
Run Code Online (Sandbox Code Playgroud)
不幸的是,这似乎不适用于我的系统。
注意:我正在使用由芯片组供应商修改的系统和内核运行,因此可能已修改某些内容使其无法正常工作。
有人知道吗
事实证明,Android修改了内核能力系统,允许根据group-id验证特定能力。不幸的是,所做的修改似乎并没有涵盖所有情况。为了解决我遇到的问题,我修改了cap_netlink_recv检查以使用 Android 修改后的cap_capability调用。这允许net_link组中的用户获得CAP_NET_LINK能力。
\n\n此更改似乎符合对 Android 内核所做的修改的精神,并且适用于我的情况。
\n\ndiff --git a/security/commoncap.c b/security/commoncap.c\n index ccfe568..f069f8d 100644\n --- a/security/commoncap.c\n +++ b/security/commoncap.c\n @@ -56,21 +56,23 @@\n }\n}\n\nint cap_netlink_send(struct sock *sk, struct sk_buff *skb)\n{\n\xc2\xbb return 0;\n}\n\nint cap_netlink_recv(struct sk_buff *skb, int cap)\n{\n-\xc2\xbb if (!cap_raised(current_cap(), cap))\n+\xc2\xbb if (cap_capable(current, current_cred(),\n+\xc2\xbb \xc2\xbb \xc2\xbb current_cred()->user->user_ns, cap,\n+\xc2\xbb \xc2\xbb \xc2\xbb SECURITY_CAP_NOAUDIT) != 0)\n\xc2\xbb \xc2\xbb return -EPERM;\n\xc2\xbb return 0;\n}\nEXPORT_SYMBOL(cap_netlink_recv);\n\n/**\n * cap_capable - Determine whether a task has a particular effective capability\n * @tsk: The task to query\n * @cred: The credentials to use\n * @ns: The user namespace in which we need the capability\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
7100 次 |
| 最近记录: |