Eh bien, c'est une sorte de serveur web.C++: N'importe quel moyen de «prison»?
Je charge des fichiers .dll (.a) et les utilise comme modules de programme.
Je parcours récursivement les répertoires et place les foncteurs '_main' de ces bibliothèques dans std :: map sous le nom, qui est membre des fichiers spéciaux '.m'.
Le répertoire principal a peu de répertoires pour chaque hôte.
Le problème est que je dois empêcher l'utilisation de 'fopen' ou de toute autre fonction de système de fichiers fonctionnant avec un répertoire en dehors de ce répertoire hôte.
La seule façon que je peux voir pour cela - écrire une chaîne pour stdio.h (je veux dire, écrire s_stdio.h qui a une vérification de nom de fichier).
Peut-être que ce pourrait être un démon, attraper les appels système et identifier quelque chose?
ajouter
Eh bien, et qu'en est-ce genre de situation: je télécharger seulement souses puis compiler directement sur mon serveur après avoir vérifié jusqu'à? Eh bien, c'est la seule façon que j'ai trouvée (avoir tout à l'intérieur d'un espace d'adresse toujours).
@Tronic, merci pour 'sandboxing', mais qu'en est-il de 'winapi' - il est souhaitable d'être multi-plateforme (je comprends que le démon ne peut pas être cr-p, donc j'utiliserais peu de réalisation dans ce cas pour chaque Plate-forme). –
J'exécuterais chaque _module_ dans son propre processus ayant chacun un compte d'utilisateur différent. Jetez également un coup d'oeil à chroot(). –
Alexandre Jasmin, c'est la première chose qui me vient à l'esprit. Mais il devrait être à l'intérieur d'un espace d'adresse. C'est ce que j'essaie de viser. –