• No se han encontrado resultados

4.5 Contención del entorno de desarrollo: Haula

4.5.3 Herramientas en las que se soporta Haula

4.5.3.1 Schroot

4.5.3.1.3 Archivos de configuración relevantes

4.5.3.1.3.1 Definiciones de chroots (/etc/schroot/schroot.conf)

El fichero /etc/schroot/schroot.conf contiene un listado con las definiciones de todas o algunas de

las jaulas existentes (ver también los ficheros contenidos en /etc/schroot/chroot.d/).

Nota: este fichero debe pertenecer al usuario 'root' y no ser editable por otros usuarios. Ejemplo:

# schroot chroot definitions.

# See schroot.conf(5) for complete documentation of the file format. #

# Please take note that you should not add untrusted users to # root-groups, because they will essentially have full root access # to your system. They will only have root access inside the chroot, # but that's enough to cause malicious damage.

# [sid]

description=Debian sid (unstable) directory=/srv/chroot/sid users=rleigh groups=sbuild root-groups=root aliases=unstable,default [sid-snap] type=lvm-snapshot

description=Debian sid LVM snapshot groups=sbuild,root root-users=rleigh root-groups=root,sbuild source-root-users=rleigh device=/dev/hda_vg/sid_chroot mount-options=-o atime,sync,user_xattr lvm-snapshot-options=--size 2G

4.5.3.1.3.2 Más definiciones de chroots (/etc/schroot/chroot.d/)

El directorio /etc/schroot/chroot.d/ contiene ficheros de texto con definiciones de jaulas. Estas

definiciones se tratarán exactamente igual que las del fichero /etc/schroot/schroot.conf y se sumarán al

total de jaulas definidas.

Cada fichero puede contener una o más definiciones de jaulas.

4.5.3.1.3.3 Scripts de arranque y parada de las jaulas (/etc/schroot/setup.d/)

El directorio /etc/schroot/setup.d/ contiene scripts con secuencias de comandos que se ejecutan cuando

se entra a un entorno chroot y cuando se sale. Estos scripts son generales para cualquier chroot, pero permiten personalizar su funcionamiento para cada chroot mediante el uso de variables de entorno que pueden establecer estas anteriormente. Algunas de las variables generales son:

– AUTH_USER: Nombre del usuario que aparecerá logueado dentro de la jaula.

– CHROOT_NAME: Nombre de la jaula. Útil para restringir algunos comandos a determinadas jaulas. – CHROOT_PATH: Ruta absoluta a la jaula en el sistema anfitrión.

Se puede consultar la lista completa de variables de entorno generales en la página man de Linux: schroot-setup(5) [18].

La ejecución de los scripts sigue el estilo de init.d: orden de ejecución según prefijo y acción de inicio o de salida, según se pase como primer parámetro:

– 'setup-start' – 'setup-recover' – 'setup-stop'

Algunos de los scripts que vienen por defecto son:

00check 05file 05union 15binfmt 20copyfiles 50chrootname 99check 05btrfs 05lvm 10mount 15killprocs 20nssdatabases 70services

4.5.3.1.3.4 Script de configuración (config)

Por defecto este script está contenido en el fichero /etc/schroot/default/script, pero tal ruta se puede

personalizar por jaula de cualquiera de las siguientes maneras:

a. Creando un profile diferente de default en la ruta /etc/schroot/{nombre_profile}/ y ubicando el archivo config dentro de esta carpeta.

El nombre de este profile se deberá indicar en la definición de la jaula, de una de las siguientes maneras, dependiendo de la versión de schroot:

Schroot versión >=1.6: Usando la clave 'profile={nombre_profile}'.

Schroot versión <1.6: Usando la clave 'script-config={nombre_profile}/config' .

b. Indicando la ruta del fichero config en la clave setup.config de la definición de la jaula.

La ruta establecida en esta clave es relativa a /etc/schroot/.

Esta opción sólo está disponible para la versión 1.6 y superior de schroot.

Este fichero está en formato sh y será lanzado nada más iniciar la jaula, mediante la inclusión automática de su código fuente al principio de cada script de arranque y parada de la jaula (como un include de una

cabecera). Puede, por ejemplo, establecer variables de entorno personalizadas para usarlas posteriormente en los scripts de arranque y parada.

Algunas de las variables de entorno pre-existentes que pueden ser configuradas son:

– FSTAB: Ruta, relativa a /etc/schroot/, del fichero fstab a usar en la jaula.

Equivalente a la clave de configuración setup.fstab.

– COPYFILES: Ruta, relativa a /etc/schroot/, del fichero copyfiles a usar en la jaula.

Equivalente a la clave de configuración setup.copyfiles.

– NSSDATABASES: Ruta, relativa a /etc/schroot/, del fichero nssdatabases a usar en la jaula.

Equivalente a la clave de configuración setup.nssdatabases.

4.5.3.1.3.5 Listado de sistemas de ficheros a montar dentro de la jaula (fstab)

Por defecto este listado está contenido en el fichero /etc/schroot/default/fstab, pero tal ruta se puede

personalizar por jaula de cualquiera de las siguientes maneras:

c. Creando un profile diferente de default en la ruta /etc/schroot/{nombre_profile}/ y ubicando el archivo fstab dentro de esta carpeta.

El nombre de este profile se deberá indicar en la definición de la jaula, de una de las siguientes maneras, dependiendo de la versión de schroot:

Schroot versión >=1.6: Usando la clave 'profile={nombre_profile}'.

Schroot versión <1.6: Usando la clave 'script-config={nombre_profile}/config' .

d. Indicando la ruta del fichero fstab en la clave setup.fstab de la definición de la jaula.

La ruta establecida en esta clave es relativa a /etc/schroot/.

Esta opción sólo está disponible para la versión 1.6 y superior de schroot.

Este fichero contiene la tabla de sistemas de ficheros a montar dentro de la jaula (habitualmente /proc, /home, /dev, etc.). El formato es el estándar del fichero /etc/fstab.

Ejemplo:

# fstab: static file system information for chroots.

# Note that the mount point will be prefixed by the chroot path # (CHROOT_PATH)

#

# <file system> <mount point> <type> <options> <dump> <pass> /proc /proc none rw,bind 0 0 /sys /sys none rw,bind 0 0 /dev /dev none rw,bind 0 0 /dev/pts /dev/pts none rw,bind 0 0 /home /home none rw,bind 0 0 /tmp /tmp none rw,bind 0 0

4.5.3.1.3.6 Listado de ficheros a copiar dentro de la jaula (copyfiles)

Por defecto este listado está contenido en el fichero /etc/schroot/default/copyfiles, pero tal ruta se

a. Creando un profile diferente de default en la ruta /etc/schroot/{nombre_profile}/ y ubicando el archivo copyfiles dentro de esta carpeta.

El nombre de este profile se deberá indicar en la definición de la jaula, de una de las siguientes maneras, dependiendo de la versión de schroot:

Schroot versión >=1.6: Usando la clave 'profile={nombre_profile}'.

Schroot versión <1.6: Usando la clave 'script-config={nombre_profile}/config' .

b. Indicando la ruta del fichero copyfiles en la clave setup.copyfiles de la definición de la jaula.

La ruta establecida en esta clave es relativa a /etc/schroot/.

Esta opción sólo está disponible para la versión 1.6 y superior de schroot.

Este fichero contiene la lista de ficheros a copiar desde el host a dentro de la jaula cada vez que se entre a esta.

Deberá aparecer un fichero por línea, con la ruta absoluta del host. No se puede especificar otra ruta distinta para dentro de la jaula, sino que el fichero aparecerá con la misma ruta absoluta que en el host. Ejemplo:

# Files to copy into the chroot from the host system. #

# <source and destination> /etc/resolv.conf

4.5.3.1.3.7 Listado de BBDD de sistema a montar dentro de la jaula (nssdatabases)

Por defecto este listado está contenido en el fichero /etc/schroot/default/nssdatabases, pero tal ruta se

puede personalizar por jaula de cualquiera de las siguientes maneras:

a. Creando un profile diferente de default en la ruta /etc/schroot/{nombre_profile}/ y ubicando el archivo nssdatabases dentro de esta carpeta.

El nombre de este profile se deberá indicar en la definición de la jaula, de una de las siguientes maneras, dependiendo de la versión de schroot:

Schroot versión >=1.6: Usando la clave 'profile={nombre_profile}'.

Schroot versión <1.6: Usando la clave 'script-config={nombre_profile}/config' .

b. Indicando la ruta del fichero nssdatabases en la clave setup.nssdatabases de la definición de la jaula.

La ruta establecida en esta clave es relativa a /etc/schroot/.

Esta opción sólo está disponible para la versión 1.6 y superior de schroot.

Este fichero contiene a lista de bases de datos del sistema, como listas de usuarios, grupos, passwords, etc.

Ejemplo:

# System databases to copy into the chroot from the host system. # # <database name> passwd shadow group gshadow services protocols networks hosts