我了解Netlink是在Linux中通信内核和用户空间的现代且正确的方法。

我有一个需要配置的内核模块,因此我正在使用Netlink使其与用户空间应用程序通信。

一切正常,但在我看来,任何用户都可以与我的模块对话。我可以使用权限等来锁定应用程序,但是该项目是开源的,因此任何用户都可以轻松地编译用户空间应用程序。嗯,任何用户都可以配置我的内核。那对我来说并不好。

似乎我在这里缺少了一些非常重要的东西,但是我发现的Netlink文档只是关于如何运行它的信息,而不是它在现实世界中的适用性。

如何限制对模块Netlink套接字的访问?如果那不可能,那还有什么可以做的呢?

最佳答案

面容

从RFC 3549:



内核应该是告诉模块是否应该让用户继续前进的人,而不是Netlink。明显地。

只是在内核空间中通过编码来阻止

/* If the current thread of execution doesn't have the proper privileges... */
if (!capable(CAP_NET_ADMIN)) { /* Or CAP_SYS_ADMIN or whatever */
    /* Throw this request away. */
    return -EPERM;

, 完毕。

感谢ipcloudstadokoro指导我朝着正确的方向发展。

关于linux - Netlink和安全性如何相互影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18661460/

10-12 22:10