Pregunta

¿Hay una manera de caja de arena un proceso Linux en un directorio determinado, y dar a este proceso exclusivo de acceso rw a esta dir? Por ejemplo, crear un directorio de trabajo temporal, por ejemplo, y empezar pitón u otra herramienta de scripting de tal manera que sólo se puede escribir en este directorio, sin limitar demasiado de su funcionalidad. Y también que Sólo este proceso puede tener acceso a leer desde este directorio (a excepción de los superusuarios, por supuesto).

Necesito este cajón de arena a un servicio web que básicamente permite al usuario ejecutar código arbitrario. Actualmente hacemos autorización en el software en sí mismo, pero al final todos los procesos se ejecutan como uno y el mismo usuario Linux. Necesitaríamos una manera en la que un usuario no puede hacer ningún daño en el sistema, pero tiene un directorio privado de trabajo temporal para escribir y leer archivos que está protegido de los otros usuarios del servicio web.

¿Fue útil?

Solución

Los permisos de archivo se basa en propietario / grupo no procesa para que varios programas dirigidos por el mismo usuario van a ser capaces de directorios de acceso de propiedad. Sin embargo, si se crea un directorio temporal para cada proceso antes de que se ejecute y chroot () que entonces ningún proceso debe ser capaz de salir de su jaula chroot para acceder a otros directorios.

La idea básica es que el directorio temporal se convierte en la parte superior del árbol de directorios que se refiere a mucho el proceso. El proceso no sabe nada, ni puede cambiar a cualquier cosa por encima de ella. De lo contrario, puede leer / escribir a crear / eliminar cualquier contenido a su del corazón en su caja de arena.

Por ejemplo:

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

Véase también "hombre 8 chroot".

Otros consejos

  

de tal manera que solo se puedan escribir   en este directorio, sin limitar   demasiado de su funcionalidad.

Vaya, esto parece casi mágico. Apenas una cuestión de programación.

Parece que usted quiere algo así como el equivalente de Linux de la FreeBSD cárcel , o al menos algo bastante parecido. Este entrada de blog contiene la descripción de una herramienta con el mismo nombre en menos.

Se puede usar un parche para el kernel como Grsecurity (hay otros que podrían hacer el trabajo, creo, busca SELinux y AppArmor) para hacer cumplir RBAC (control de acceso basado en roles) para un determinado proceso.

Creo utilizando una seguridad mejorada del núcleo es una necesidad, dada su situación de uso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top