En informática , el bit fijo es un indicador de derecho de acceso de propiedad del usuario que se puede asignar a archivos y directorios en sistemas tipo Unix .
Hay dos definiciones: una para archivos y otra para directorios.
En el caso de los archivos, en particular los ejecutables, el superusuario podría etiquetarlos para que se conserven en la memoria principal, incluso cuando ya no sea necesario, a fin de minimizar el intercambio que se produciría cuando surgiera otra necesidad y el archivo tuviera que volver a cargarse desde una memoria secundaria relativamente lenta. [1] Esta función se ha vuelto obsoleta debido a la optimización del intercambio.
En el caso de los directorios, cuando se activa el bit de adhesión de un directorio, el sistema de archivos trata los archivos de dichos directorios de una manera especial, de modo que solo el propietario del archivo, el propietario del directorio o el usuario root pueden cambiar el nombre o eliminar el archivo. Sin el bit de adhesión activado, cualquier usuario con permisos de escritura y ejecución para el directorio puede cambiar el nombre o eliminar los archivos que contiene, independientemente del propietario del archivo. Normalmente, esto se activa en el /tmp
directorio para evitar que los usuarios normales eliminen o muevan los archivos de otros usuarios.
La función moderna del bit adhesivo se refiere a los directorios y protege a los directorios y su contenido de ser pirateados por personas que no son sus propietarios; esto se encuentra en la mayoría de los sistemas modernos similares a Unix. Los archivos en un directorio compartido, por ejemplo, /tmp
pertenecen a propietarios individuales y las personas que no son sus propietarios no pueden eliminarlos, sobrescribirlos ni cambiarles el nombre.
El bit pegajoso se introdujo en la quinta edición de Unix (en 1974) para su uso con archivos ejecutables puros . [2] Cuando se configuraba, indicaba al sistema operativo que retuviera el segmento de texto del programa en el espacio de intercambio después de que el proceso saliera. Esto acelera las ejecuciones posteriores al permitir que el núcleo realice una sola operación de mover el programa desde el espacio de intercambio a la memoria real. Por lo tanto, los programas de uso frecuente, como los editores, se cargarían notablemente más rápido. Un problema notable con los programas "pegados" era reemplazar el ejecutable (por ejemplo, durante la aplicación de parches ); para hacerlo, era necesario eliminar el bit pegajoso del ejecutable, ejecutar el programa y salir para vaciar la caché, reemplazar el ejecutable binario y luego restaurar el bit pegajoso.
Posteriormente, este comportamiento se volvió operativo solo en HP-UX y UnixWare . Solaris parece haber abandonado esto en 2005. [ cita requerida ] La versión 4.4-Lite de BSD mantuvo el antiguo comportamiento de bit pegajoso, pero posteriormente se eliminó de OpenBSD (a partir de la versión 3.7) y FreeBSD (a partir de la versión 2.2.1). Ninguna versión de Linux ha admitido nunca este comportamiento tradicional; Linux realiza el almacenamiento en caché de archivos ejecutables de la misma forma que todos los archivos, por lo que no es necesario volver a ejecutar el programa para vaciar el caché.
El uso más común del bit adhesivo es en directorios que residen dentro de sistemas de archivos para sistemas operativos tipo Unix . Cuando se activa el bit adhesivo de un directorio, el sistema de archivos trata los archivos en dichos directorios de una manera especial, de modo que solo el propietario del archivo, el propietario del directorio o el root pueden renombrar o eliminar el archivo. Sin el bit adhesivo activado, cualquier usuario con permisos de escritura y ejecución para el directorio puede renombrar o eliminar los archivos que contiene, independientemente del propietario del archivo. Por lo general, esto se activa en el /tmp
directorio para evitar que los usuarios comunes eliminen o muevan los archivos de otros usuarios. Esta característica se introdujo en 4.3BSD en 1986 y hoy se encuentra en la mayoría de los sistemas modernos tipo Unix.
Además, Solaris (a partir de Solaris 2.5) define un comportamiento especial cuando el bit persistente se activa en archivos no ejecutables : cuando se accede a esos archivos, el núcleo no los almacena en caché . Esto se suele activar en los archivos de intercambio para evitar que el acceso al archivo borre datos más importantes de la caché del sistema. También se utiliza ocasionalmente para pruebas de evaluación comparativa . [ cita requerida ]
El bit de fijación también lo establece el montador automático para indicar que un archivo aún no se ha montado. Esto permite que programas como ls ignoren los archivos remotos que no se han montado.
El bit persistente se puede configurar con el comando chmod y se puede configurar con su modo octal 1000 o con su símbolo t ( s ya lo utiliza el bit setuid ). Por ejemplo, para agregar el bit al directorio /usr/local/tmp
, se escribiría chmod +t /usr/local/tmp. O bien, para asegurarse de que el directorio tenga tmp
permisos estándar, también se podría escribir chmod 1777 /usr/local/tmp.
Para borrarlo, utilice chmod -t /usr/local/tmpo chmod 0777 /usr/local/tmp(este último también restablecerá el tmp
directorio a los permisos estándar).
En la notación de permisos del sistema de archivos simbólico Unix , el bit persistente se representa con la letra t o T en el lugar del carácter final, dependiendo de si el bit de ejecución de la categoría Otros está activado o desactivado, respectivamente. Por ejemplo, en Solaris 8, el /tmp
directorio, que de manera predeterminada tiene activados tanto el bit de ejecución Otros como el bit persistente, se muestra como:
$ ls -ld /tmp drwxrwxrwt 4 root sys 485 10 de noviembre 06:01 /tmp
Si el bit fijo se configura en un archivo o directorio sin el bit de ejecución configurado para las otras categorías (no propietario del usuario y no propietario del grupo), se indica con una T mayúscula (que reemplaza lo que de lo contrario sería - ):
# ls -l test -rw-r--r-- 1 root cualquiergrupo 0 10 nov 12:57 prueba # chmod +t prueba ; ls -l test -rw-r--rT 1 root cualquiergrupo 0 10 nov 12:57 prueba
{{cite web}}
: CS1 maint: bot: estado de URL original desconocido ( enlace )