用户模式权限被拒绝绑定到套接字

Esw*_*war 6 c sockets ioctl

在linux机器上的用户模式[非root]中,我试图通过使用a来绑定套接字ioctl(iInterfaceSocket, SIOCSIFADDR, &stCommand).我到了error 13 -> Permission denied because of user mode.如果从usermode更改为内核模式,一切正常.

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

Rob*_*obᵩ 8

除非你是root用户,否则你不能设置接口地址(从技术上讲,除非你有CAP_NET_ADMIN).见devinet.c.

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