En mode utilisateur [non root] sur une machine Linux, j'essaye de lier un socket en utilisant un ioctl(iInterfaceSocket, SIOCSIFADDR, &stCommand)
. Je reçois error 13 -> Permission denied because of user mode
. Si vous passez du mode usbode au mode noyau, tout fonctionne correctement.permission en mode utilisateur refusée de se lier au socket
Je dois lier le socket en mode utilisateur uniquement. Veuillez suggérer une solution en expliquant le problème ci-dessus. Si j'ai manqué des informations s'il vous plaît faites le moi savoir et je fournirai plus d'informations.
Quel est le problème avec 'bind()'? – Erik
@ user736403 - qu'essayez-vous précisément de réaliser? 'SIOCSIFADDR' ne lie pas un socket,' bind() 'le fait. 'SIOCSIFADDR' définit l'adresse de l'interface réseau de la machine. –
Juste un petit nitpick: exécuter un programme en tant que root est très différent de l'exécution en mode noyau. Les programmes exécutés en tant que root fonctionnent toujours en mode utilisateur la plupart du temps; ils ont juste des privilèges élevés. Tous les processus (root ou non) basculent entre le mode utilisateur et le mode noyau lorsqu'ils effectuent des appels système comme 'ioctl'. –