2012-12-12 50 views
2

我有一個程序,它使用Libnl並嘗試通過netlink套接字設置一些qdisc。授予用戶權限設置qdisc與netlink套接字

我如何管理程序以獲取設置qdisc的權限?

我知道我可以運行它sudo但這不是我的選擇。 是否有像limits.conf這樣的配置文件授予特定用戶的權限?

回答

2

經過大量的谷歌搜索並查看手冊頁後,這似乎是不可能的。

Qdiscs由以下類型的套接字(AF_NETLINK)控制。 Qdiscs使用netlink套接字與內核通信。例如,如果您使用套接字(RAW)打開套接字,則可以將linux「capability」CAP_NET_RAW設置爲您希望能夠使用原始套接字的用戶。

如果你讀了網絡鏈路手冊頁,你看,他們需要CAP_NET_ADMIN對於其他類型的操作,但如果你使用「setcap」命令具有這種能力,然後試圖操縱隊列規定作爲一個用戶,它不似乎工作。

如果有人知道更好的方法(包括linux內核的補丁),請發佈。