sysctl es un mecanismo de software en algunos sistemas operativos tipo Unix que lee y modifica los atributos del núcleo del sistema , como su número de versión, límites máximos y configuraciones de seguridad. [1] Está disponible tanto como una llamada al sistema para programas compilados como un comando de administrador para uso interactivo y creación de scripts. Linux también expone sysctl como un sistema de archivos virtual .
En BSD, estos parámetros son generalmente objetos en una base de información de administración (MIB) que describen límites ajustables como el tamaño de un segmento de memoria compartida, la cantidad de subprocesos que el sistema operativo usará como cliente NFS o la cantidad máxima de procesos en el sistema; o describen, habilitan o deshabilitan comportamientos como el reenvío de IP , las restricciones de seguridad en el superusuario (el "nivel seguro") o la salida de depuración. [1]
En OpenBSD y DragonFly BSD , sysctl también se utiliza como capa de transporte para el marco de trabajo hw.sensors para la monitorización de hardware , [2] mientras que NetBSD utiliza la llamada al sistema ioctl para su contraparte sysmon envsys . Tanto sysctl como ioctl son las dos llamadas al sistema que se pueden utilizar para añadir funcionalidad adicional al núcleo sin añadir otra llamada al sistema ; [3] por ejemplo, en 2004 con OpenBSD 3.6, cuando se introdujo la utilidad tcpdrop, sysctl se utilizó como la llamada al sistema subyacente. [3] [4] En FreeBSD , aunque no hay un marco de trabajo de sensores, los sensores individuales de temperatura y otros sensores se siguen exportando comúnmente a través del árbol sysctl mediante Newbus, por ejemplo, como es el caso del aibs(4)
controlador que está disponible en los 4 sistemas BSD, incluido FreeBSD. [5] [6] [7]
En BSD, generalmente se proporciona una llamada al sistema o un contenedor de llamada al sistema para que lo utilicen los programas, así como un programa administrativo y un archivo de configuración (para establecer los parámetros ajustables cuando se inicia el sistema ).
Esta característica apareció por primera vez en 4.4BSD . Tiene la ventaja sobre las constantes codificadas de que los cambios en los parámetros se pueden realizar de forma dinámica sin tener que volver a compilar el núcleo.
Históricamente, aunque las variables del núcleo se podían modificar a través de sysctl, los elementos que comprendían la MIB del árbol sysctl se codificaban en tiempo de compilación y, a partir de 2019, sigue siendo el caso en OpenBSD (con algunas excepciones como hw.sensors , que administra y proporciona su propio subárbol dinámico). FreeBSD ha tenido "magia interna sysctl" para la gestión dinámica del árbol sysctl desde 1995; NetBSD ha tenido su propia implementación de un árbol sysctl dinámico desde diciembre de 2003. [5] [6]
En Linux, el mecanismo de interfaz sysctl también se exporta como parte de procfs en el directorio /proc/sys (que no debe confundirse con el directorio /sys ). Esta diferencia significa que comprobar el valor de algún parámetro requiere abrir un archivo en un sistema de archivos virtual , leer su contenido, analizarlo y cerrar el archivo. La llamada al sistema sysctl existe en Linux, pero ha quedado obsoleta y no tiene una función contenedora en glibc ; normalmente no está disponible debido a que muchas distribuciones configuran el núcleo sin CONFIG_SYSCTL_SYSCALL; por lo que no se recomienda su uso. [8]
Cuando el reenvío de IP está habilitado, el núcleo del sistema operativo actuará como un enrutador . En FreeBSD , NetBSD , OpenBSD , DragonFly BSD y Darwin / Mac OS X , el parámetro net.inet.ip.forwarding se puede configurar en 1 para habilitar este comportamiento. En Linux, el parámetro se llama net.ipv4.ip_forward .
En la mayoría de los sistemas, el comando sysctl -w parameter =1 habilitará un determinado comportamiento. Esto persistirá hasta el siguiente reinicio. Si el comportamiento debe habilitarse siempre que se inicie el sistema, se puede agregar o reescribir la línea parameter =1 en el archivo /etc/sysctl.conf . Además, algunas variables sysctl no se pueden modificar después de que se inicie el sistema. Estas variables (según la variable, la versión y el tipo de BSD) deben configurarse de forma estática en el núcleo en el momento de la compilación o en /boot/loader.conf .
{{cite conference}}
: CS1 maint: bot: estado de URL original desconocido ( enlace )