我有一个程序使用Libnl并尝试通过netlink套接字设置一些qdisc。
如何管理程序以获得设置qdisc的权限?
我知道我可以用sudo
运行它,但这对我来说不是一个选择。
是否有任何配置文件如limits.conf
来授予特定用户的权限?
答案 0 :(得分:3)
经过广泛的谷歌搜索并查看了手册页,这似乎是不可能的。
Qdiscs由以下类型的套接字(AF_NETLINK)控制。 Qdiscs使用netlink套接字与内核通信。例如,如果您打开一个带套接字的套接字(RAW),您可以将linux“功能”CAP_NET_RAW设置为您希望能够使用原始套接字的用户。
如果您阅读了netlink联机帮助页,您会发现它们需要CAP_NET_ADMIN用于其他类型的操作,但如果您使用具有此功能的“setcap”命令,然后尝试以该用户身份操作Qdisc,则不会出现工作。
如果有人知道更好的方式(包括linux内核的补丁),请发帖。