Netlink和安全如何互相影响?

我知道Netlink是在Linux中交stream内核和用户空间的现代和正确的方式。

我有一个需要configuration的内核模块,所以我使用Netlink与用户空间应用程序交谈。

一切都是奇迹,但在我看来,任何用户都可以跟我的模块交谈。 我可以使用权限等来locking应用程序,但项目是开源的,所以任何用户都可以轻松地编译用户空间应用程序。 Ergo, 任何用户都可以configuration我的内核 。 这不适合我。

看来我在这里丢失了一些非常重要的东西,但是我发现Netlink的文档是关于如何让它运行,而不是如何适应现实世界。

我怎样才能限制访问模块的Netlink套接字? 如果这是不可能的,还有什么可以做的呢?

捂脸

从RFC 3549:

Netlink生活在由内核和用户空间分隔的单一主机的可信环境中。 Linux功能确保只有具有CAP_NET_ADMIN功能的用户(通常是root用户)才能打开套接字。

内核应该是告诉模块是否让用户继续执行的人,而不是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; 

,完成。

感谢ipclouds和tadokoro引导我朝着正确的方向发展。