chroot(2) System Calls Manual chroot(2) NOMBRE chroot - cambia el directorio raiz BIBLIOTECA Biblioteca Estandar C (libc, -lc) SINOPSIS #include int chroot(const char *ruta); Requisitos de Macros de Prueba de Caracteristicas para glibc (vease feature_test_macros(7)): chroot(): A partir de glibc 2.2.2: _XOPEN_SOURCE && ! (_POSIX_C_SOURCE >= 200112L) || /* A partir de glibc 2.20: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE Antes de glibc 2.2.2: ninguno DESCRIPCION chroot() cambia el directorio raiz al definido en ruta. Este directorio sera usado como raiz para aquellos nombres de ruta que comiencen por /. El directorio raiz es heredado por todos los descendientes del proceso actual. Solo los procesos privilegiados (en Linux seran aquello con la capacidad CAP_SYS_CHROOT en su espacio de nombre de usuario) puede invocar chroot(). Esta llamada modifica un componente del proceso de resolucion de rutas de acceso y no realiza ninguna otra accion. En particular, no esta disenada para fines de seguridad, ni para aislar completamente un proceso ni para restringir las llamadas al sistema de archivos. Anteriormente, los <> utilizaban chroot() para restringirse antes de pasar las rutas proporcionadas por usuarios no confiables a llamadas del sistema como open(2). Sin embargo, si una carpeta se mueve fuera del directorio chroot, un atacante puede aprovechar esta situacion para salir tambien de el. La forma mas sencilla de hacerlo es usar chdir(2) para ir al directorio que se va a mover, esperar a que se mueva y abrir una ruta como ../../../etc/passwd. Una variante algo mas compleja tambien funciona en ciertas circunstancias si no se permite chdir(2). Si un demonio permite indicar un directorio raiz, esto generalmente significa que, si desea evitar que usuarios remotos accedan a archivos fuera del directorio raiz, debera asegurarse de que las carpetas nunca se muevan fuera de el. Esta llamada no cambia el directorio de trabajo actual, por lo que el directorio '.' puede estar fuera del arbol enraizado en '/'. En particular, el administrador puede escapar de una "prision chroot" ejecutando: mkdir foo; chroot foo; cd .. Esta llamada no cierra los descriptores de archivo abiertos, y dichos descriptores podran permitir el acceso a archivos fuera del arbol raiz. VALOR DEVUELTO En caso de exito se devuelve cero. En caso de error se devuelve -1, y errno se configura para indicar el error. ERRORES Segun el sistema de ficheros, se pueden obtener otros errores. Los errores mas comunes se listan a continuacion: EACCES Se deniega el permiso de busqueda en un componente del prefijo de ruta. (Vease tambien path_resolution(7).) EFAULT path apunta fuera de su espacio de direcciones accesibles. EIO Ocurrio un error de E/S. ELOOP Se encontraron demasiados enlaces simbolicos al resolver path. ENAMETOOLONG path es demasiado largo. ENOENT El fichero no existe. ENOMEM No hay disponible suficiente memoria del nucleo. ENOTDIR Un componente del camino path no es un directorio. EPERM El invocador no tiene suficientes privilegios. ESTANDARES Ninguno. HISTORIAL SVr4, 4.4BSD, SUSv2 (marcado como LEGADO). Esta funcion no forma parte de POSIX.1-2001. NOTAS Un proceso hijo creado mediante fork(2) hereda el directorio raiz de su progenitor. execve(2) no modifica el directorio raiz. El enlace simbolico magico, /proc/pid/root, puede utilizarse para descubrir el directorio raiz de un proceso. Consulte proc(5) para obtener mas informacion. FreeBSD cuenta con la llamada jail() mas robusta. VEASE TAMBIEN chroot(1), chdir(2), pivot_root(2), path_resolution(7), switch_root(8) TRADUCCION La traduccion al espanol de esta pagina del manual fue creada por Miguel Angel Sepulveda , Juan Piernas , Miguel Perez Ibars y Marcos Fouces Esta traduccion es documentacion libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. Si encuentra algun error en la traduccion de esta pagina del manual, envie un correo electronico a . Paginas de Manual de Linux 6.15 17 Mayo 2025 chroot(2)