2012-12-12 2 views
3

Je sais que vous ne pouvez techniquement chrooter un thread, mais je cherche des alternatives fonctionnelles qui limiteraient la quantité d'autorisations à un ensemble existant de tâches dans un thread.chroot alternative pour les threads

Edit:. Ceci est pour un environnement Linux, mais les techniques connexes de Windows seraient utiles aussi bien (même si elles n'ont pas * NIX équivalent

+2

Vous devrez probablement créer différents utilisateurs avec les autorisations que vous souhaitez et exécuter ces tâches dans le contexte utilisateur qui leur est applicable. – Garvin

Répondre

2

des autorisations pour un fil dans les fenêtres est trivial à l'aide du impersonation functions dans la Win32 API

Je ne suis pas un expert en programmation système GNU/Linux donc il peut y avoir des extensions qui permettent de modifier l'UID par thread, mais autant que je sache, les systèmes Unix ont une sécurité par processus pas par thread comme dans Windows:

Cela est dû au fait qu'Unix a historiquement utilisé processe s pour le traitement parallèle (fork) alors que Windows utilise des threads (CreateThread), et (historiquement?) la création de nouveaux processus dans Unix est comparable en vitesse à la création de nouveaux threads dans Windows. Je donne votre question +1 car une recherche rapide sur Google semble indiquer que la meilleure façon de restreindre les permissions est de répartir les différentes tâches entre les processus par sécurité et d'utiliser setuid pour définir les permissions et éventuellement les chrooter. Je voudrais savoir s'il existe d'autres options puisque, comme mentionné ci-dessus, ce cas d'utilisation est plutôt trivial à implémenter dans Windows.

+0

Merci pour la réponse Eli Algranti. Le multitâche Linux était entièrement basé sur les processus jusqu'à 5 ans ou plus, lorsque pthreads a commencé à être introduit. Linux est désormais compatible avec les threads, mais ses routines d'autorisation utilisateur sont très basées sur les processus car, comme vous l'avez indiqué, Linux utilisait historiquement les processus enfants comme étant associés aux threads. – JSON

+0

Merci pour le lien Windows. Je ne savais pas comment, mais je savais qu'ils devaient avoir un moyen de le faire sur Windows depuis son multithreading et a un régime assez solide pour le contrôle de l'utilisateur. Maintenant, la seule question est de savoir si * NIX a trouvé un moyen d'intégrer les mêmes idées de base dans les threads, car ils sont assez nouveaux pour cela. – JSON