linux - ¿Cómo afecta el chroot al uso de la memoria de las bibliotecas dinámicas?
memory-management shared-libraries (3)
Cuando configuré esto, copié las bibliotecas compartidas por chroot en lugar de vincular a un montaje de solo lectura. Con archivos separados, los segmentos de texto no se compartieron. Es probable que el mismo inodo se correlacione con el mismo segmento de texto de solo lectura, pero esto puede variar con el hardware de administración de memoria disponible y detalles arquitectónicos similares.
Pruebe este experimento en su sistema: escriba un pequeño programa que haga un uso mínimo de una gran biblioteca compartida. Ejecuta veinte o treinta cárceles chroot como describes, cada una con una copia ejecutiva del programa. Verifique el uso general de la memoria antes y durante la ejecución, y diseque una instancia para obtener un buen desglose del segmento de texto / datos. Si el uso de memoria aumenta según el tamaño completo del mapa para cada instancia, los segmentos no se comparten. Por el contrario, si el uso de la memoria aumenta en una fracción del mapa, los segmentos se comparten.
Aunque hay otra pregunta con un tema similar, no cubre el uso de memoria de las bibliotecas compartidas en cárceles chroot.
Digamos que tenemos unos cuantos chroots similares. Para ser más específicos, exactamente los mismos conjuntos de archivos binarios y bibliotecas compartidas que en realidad son enlaces duros a las copias maestras para conservar el espacio en disco (para evitar la posibilidad de una alteración de archivos, el sistema de archivos está montado de solo lectura).
¿Cómo se ve afectado el uso de la memoria en dicha configuración?
Debido a que los enlaces duros comparten el mismo inodo subyacente, el kernel los trata como el mismo elemento cuando se trata de caché / mapeo.
Verá ahorros en la memoria caché del sistema de archivos mediante el uso de enlaces físicos, así como el ahorro de espacio en el disco.
El mayor problema que tengo con esto es que si alguien logra subvertir la naturaleza de solo lectura de uno de los entornos chroot, entonces podría subvertirlos haciendo modificaciones a cualquiera de los archivos enlazados.
Como se describe en la llamada del sistema chroot:
Esta llamada cambia un ingrediente en el proceso de resolución del nombre de ruta y no hace nada más.
Por lo tanto, la biblioteca compartida se cargará de la misma manera que si estuviera fuera de la cárcel chroot (comparte páginas de solo lectura, datos duplicados, etc.)