6

在 linux 机器上的用户模式 ​​[non-root] 中,我正在尝试使用ioctl(iInterfaceSocket, SIOCSIFADDR, &stCommand). 我越来越error 13 -> Permission denied because of user mode。如果从用户模式更改为内核模式,一切正常。

我只需要在用户模式下绑定套接字。请在解释上述问题时提出解决方案。如果我错过了任何信息,请告诉我,我会提供更多信息。

4

1 回答 1

8

除非您是 root,否则您无法设置接口地址(好吧,从技术上讲,除非您有CAP_NET_ADMIN)。见devinet.c

解决方案是以root身份运行。如何实现该解决方案,是否使您的整个程序为 SUID,或者要求用户通过sudogksudo运行它,或者是否将您的程序分为两部分(root 和非 root),这取决于您。

于 2011-05-03T15:43:45.100 回答