Comment puis-je changer les permissions d’un fichier de socket Linux?

J’ai un programme qui crée un socket, et puis je veux changer les permissions du fichier de socket:

ret_val = chmod(filename, 0777); 

, mais cela ne change pas, même si ret_val sera à 0. Si j’essaie la même chose sur un fichier normal, cela fonctionne.

Des idées?

PS: Je lance le programme en tant que root, il a donc toute l’autorité nécessaire.

De l’ man 7 unix :

Dans l’implémentation Linux, les sockets visibles dans le système de fichiers respectent les permissions du répertoire dans lequel ils se trouvent. Leur propriétaire, leur groupe et leurs permissions peuvent être modifiés. La création d’un nouveau socket échouera si le processus ne dispose pas des droits d’écriture et de recherche (exécution) sur le répertoire dans lequel le socket est créé. La connexion à l’object socket nécessite un droit de lecture / écriture. Ce comportement diffère de nombreux systèmes dérivés de BSD qui ignorent les permissions pour les sockets de domaine UNIX. Les programmes portables ne doivent pas compter sur cette fonctionnalité pour la sécurité.

Donc, si vous souhaitez contrôler les permissions sur un socket, vous devez contrôler les permissions du répertoire contenant le socket afin d’être portables.