sysrep:rpc
This is an old revision of the document!
Table of Contents
TP RPC
Vous disposez de documentation dans le manuel Unix (man rpc, man xdr), ainsi que des documents suivants : rpc-doc.pdf et rpc-spec.pdf.
Exercice 1 (calculation)
On vous fourni l'interface “calculation.x”.
- calculation.x
struct two_int { int a; int b; }; program CALCULATION_PROG { version CALCULATION_VERS_BASE { int sum(two_int)=1; }=1; }=0x20000000;
- Programmer cet exemple. Pour générer tout le code source (client, serveur, makefile, stubs), vous pouvez utilisez la commande suivante : “rpcgen -a calculation.x”. Il vous reste à compléter les fichiers calculation_server.c“ et “calculation_client.c”…
- Compiler : make -f makefile.calculation.
- Tester en local sur votre machine, puis sur deux machines distantes.
- Analyser le résultat de la commande “rpcinfo -p”.
- Analyser les souches de ce petit exemple. Ajouter des traces dans le code des souches afin de suivre précisément les appels à distance…
- Ajouter maintenant de nouvelles fonctions à votre service “calculation”…
Exercice 2 (rwall)
A partir de l'interface “rwall.x” qui permet d'envoyer un message.
- rwall.x
program WALLPROG { version WALLVERS { void WALLPROC_WALL(string) = 2; } = 1; } = 0x20000008;
- Implanter rapidement ce service.
- Ecrire maintenant un client pour le service “rwall”, n'utilisant pas les souches générées, grâce à la fonction “callrpc()”.
- Ecrire maintenant un serveur pour le service “rwall” n'utilisant pas les souches générées, grâce aux fonctions “registerrpc()” et “svc_run()”.
Nota Bene : cf. man rpc
Exercice 3 (authentification)
On vous fourni l'interface “hello.x”, qui retourne le message “hello world!” au client.
- hello.x
program HELLOPROG { version HELLOVERS { string HELLO(void) = 1; } = 1; } = 0x30000824;
- Implantez rapidement ce service.
- Modifiez le client pour qu'il utilise l'authentification Unix. Aidez-vous de la documentation fournie dans rpc-doc.pdf.
- Modifiez le serveur pour qu'il accepte uniquement les clients utilisant l'authentification Unix, possédant le même UID que le serveur. Vérifiez qu'un client avec un UID différent est bien rejeté !
- Que pensez-vous de ce système d'authentification ? Mettez-en évidence que vous pouvez le contourner en modifiant le code client.
sysrep/rpc.1354026073.txt.gz · Last modified: 2024/03/18 15:05 (external edit)