Mon but est de créer un concept pour les démons qui interagissent localement (pas via le réseau) avec d'autres processus, tous avec des ID/droits d'utilisateur différents.Comment transférer un fichier sur un tube nommé
Pour restreindre l'accès aux daemons aux processus avec les niveaux d'accès à droite, je throught du concept suivant:
- Chaque démon ouvre un tube nommé pour la lecture dans
/foo/{daemon-name}
- L'accès à ce tube nommé peut être facilement géré via les droits d'accès aux fichiers normaux, donc les autres processus qui ne sont pas dans le bon groupe d'utilisateurs n'auront pas d'accès en écriture
- changer les droits d'accès au démon plus tard est facile à faire sans avoir besoin de recompiler
- un processus qui veut communiquer avec le démon envoie une extrémité d'un
socketpair()
via le canal nommé et la communication continue sur ce lien
De cette façon, chaque Dameon pourrait mettre en œuvre leur propre format API ou un paquet de communiquer via le socketpair . Mais il n'y aurait pas besoin d'authentification et de ce genre parce que les droits d'accès au canal nommé ne prenaient déjà en charge qu'un groupe spécifique capable d'envoyer le socketpair pour communiquer.
Maintenant le seul problème que j'ai est que je ne peux pas obtenir le transfert du descritor de dossier de socketpair()
pour fonctionner au-dessus du tuyau nommé. sendmsg()
apparemment ne fonctionne pas sur les tuyaux nommés.
Comment puis-je envoyer l'un des socketpair()
fds via le canal nommé afin que le démon puisse accéder à la connexion et commencer à communiquer?
Vous pouvez transférer des descripteurs de fichiers sur des sockets, mais je ne pense pas qu'il soit possible de le faire en utilisant un tube nommé. Pensez à utiliser un socket pour communiquer avec votre Dæmon. – fuz