2010-10-26 25 views
2

Existe-t-il un moyen de mettre en sandbox un processus Linux dans un répertoire donné, et donne-t-il à ce processus un accès exclusif à à ce répertoire? Par exemple, créez un répertoire de travail temporaire et commencez par exemple. python ou un autre outil de script de telle sorte qu'il ne peut écrire que dans ce répertoire, sans trop limiter ses fonctionnalités. Et aussi que seulement ce processus peut accéder à lire à partir de ce répertoire (sauf pour les super-utilisateurs bien sûr).Donner à un processus Unix un accès RW exclusif à un répertoire

J'ai besoin de cela pour bac à sable un service Web qui permet essentiellement aux utilisateurs d'exécuter du code arbitraire. Nous faisons actuellement une autorisation dans le logiciel lui-même, mais à la fin, tous les processus s'exécutent sous le même utilisateur Linux. Nous aurions besoin d'un moyen par lequel un utilisateur ne peut pas faire de mal sur le système, mais a un répertoire de travail privé temporaire pour écrire et lire des fichiers qui sont protégés des autres utilisateurs du webservice.

Répondre

0

Les autorisations de fichier sont basées sur le fait que le propriétaire/groupe ne traite pas, donc plusieurs programmes exécutés par le même utilisateur vont pouvoir accéder aux répertoires possédés. Cependant, si vous créez un répertoire temporaire pour chaque processus avant qu'il ne s'exécute, puis chroot() alors aucun processus ne devrait être en mesure de sortir de sa prison chroot pour accéder à d'autres répertoires.

La notion de base est que le répertoire temporaire devient le sommet de l'arborescence de répertoires en ce qui concerne le processus. Le processus ne connaît pas et ne peut rien changer au-dessus. Sinon, il peut lire/écrire créer/supprimer tout ce qui est contenu dans son bac à sable.

Par exemple:

/rundir 
/rundir/temp1 <-- process 1 chroot jailed here, can't go above 
/rundir/temp2 <-- process 2 chroot jailed here, can't go above 

Voir aussi "l'homme 8 chroot".

0

de telle manière qu'il ne peut écrire dans ce répertoire, sans limiter trop de ses fonctionnalités.

Wow, cela semble presque magique. A peine une question de programmation.

0

On dirait que vous voulez quelque chose comme l'équivalent Linux du FreeBSD Jail, ou du moins quelque chose de très similaire. Cette blog posting contient la description d'un outil portant au moins le même nom.

0

Vous pouvez utiliser un correctif de noyau comme Grsecurity (il y en a d'autres qui pourraient faire le travail, je pense, chercher SELinux et AppArmor) pour appliquer RBAC (contrôle d'accès basé sur les rôles) pour un certain processus.

Je pense que l'utilisation d'un noyau sécurisé est un must, étant donné votre scénario d'utilisation.