我了解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;
, 完毕。
感谢ipclouds和tadokoro指导我朝着正确的方向发展。
关于linux - Netlink和安全性如何相互影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18661460/