¿Cómo funciona la broca adhesiva?

SUID

El bit pegajoso aplicado a programas ejecutables marcando el sistema para mantener una imagen del programa en la memoria después de que el programa terminó de ejecutarse.

Pero no sé qué está almacenado en la memoria. ¿Y cómo puedo verlos, en este caso.?

Comentarios

Respuesta

Esta es probablemente una de mis cosas más molestas que la gente estropea todo el tiempo. El bit SUID / GUID y el bit sticky son dos cosas completamente diferentes.

Si haces un man chmod puedes leer sobre SUID y sticky-bits. La página de manual también está disponible aquí .

antecedentes

extracto

Las letras rwxXst seleccionan los bits del modo de archivo para usuarios afectados: leer (r), escribir (w), ejecutar (o buscar directorios) (x), ejecutar / buscar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario (X), establece el ID de usuario o grupo en ejecuciones , marca de eliminación restringida o bit adhesivo ( t) .

SUID / GUID

Qué es la página de manual anterior tratando de decir es que la posición que toma el bit x en el rwxrwxrwx para el usuario octal (primer grupo de rwx) y el grupo octal (segundo grupo de rwx) puede tomar un estado adicional donde la x se convierte en una s. Cuando esto ocurre, este archivo cuando se ejecuta (si es un programa y no solo un script de shell) se ejecutará con los permisos del propietario o del grupo del archivo.

Entonces, si el archivo es propiedad de root y el bit SUID está activado, el programa se ejecutará como root. Incluso si lo ejecuta como un usuario normal. Lo mismo se aplica al bit GUID.

extracto

BITS SETUID Y SETGID

chmod borra el bit set-group-ID de un archivo normal si el ID de grupo del archivo lo hace no coincidir con el ID de grupo efectivo del usuario o con uno de los ID de grupo suplementarios del usuario, a menos que el usuario tenga los privilegios adecuados. Las restricciones adicionales pueden hacer que se ignoren los bits set-user-ID y set-group-ID de MODE o RFILE. Este comportamiento depende de la política y la funcionalidad de la llamada al sistema chmod subyacente. En caso de duda, compruebe el comportamiento del sistema subyacente.

chmod conserva los bits set-user-ID y set-group-ID de un directorio a menos que especifique explícitamente lo contrario. Puede configurar o borrar los bits con simbólicos modos como u + s y gs, y puede establecer (pero no borrar) los bits con un modo numérico.

Ejemplos de SUID / GUID

no suid / guid – solo los bits rwxr-xr-x están configurados .

$ ls -lt b.pl -rwxr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

suid & bit ejecutable del usuario habilitado (minúsculas) : los bits rwsr-xrx están configurados.

$ chmod u+s b.pl $ ls -lt b.pl -rwsr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

suid habilitado & bit ejecutable inhabilitado (S mayúscula) – los bits rwSr-xr-x están configurados.

$ chmod u-x b.pl $ ls -lt b.pl -rwSr-xr-x 1 root root 179 Jan 9 01:01 b.pl 

guid & bit ejecutable del grupo » habilitado (minúsculas) : los bits rwxr-sr-x están configurados.

$ chmod g+s b.pl $ ls -lt b.pl -rwxr-sr-x 1 root root 179 Jan 9 01:01 b.pl 

guid habilitado & bit ejecutable deshabilitado (S mayúscula) – los bits rwxr-Sr-x están configurados.

$ chmod g-x b.pl $ ls -lt b.pl -rwxr-Sr-x 1 root root 179 Jan 9 01:01 b.pl 

bit pegajoso

El bit pegajoso en el otra parte se indica como t, como con el directorio /tmp:

$ ls -l /|grep tmp drwxrwxrwt. 168 root root 28672 Jun 14 08:36 tmp 

Este bit siempre debería haber sido llamado el «bit de borrado restringido» dado que eso es lo que realmente connota. Cuando este bit de modo está habilitado, crea un directorio tal que los usuarios solo pueden eliminar archivos & directorios dentro de él de los que son propietarios.

extracto

BANDERA DE ELIMINACIÓN RESTRINGIDA O BIT ADHESIVO

La bandera de eliminación restringida o bit adhesivo es un solo bit, cuyo la interpretación depende del tipo de archivo. Para los directorios, evita que los usuarios sin privilegios eliminen o cambien el nombre de un archivo en el directorio a menos que sean propietarios del archivo o del directorio; esto se llama la bandera de eliminación restringida para el directorio y se encuentra comúnmente en directorios de escritura mundial como / tmp.Para archivos normales en algunos sistemas más antiguos, el bit guarda la imagen de texto del programa en el dispositivo de intercambio para que se cargue más rápidamente cuando se ejecute; esto se denomina bit adhesivo.

Comentarios

  • En realidad, el sticky-bit se podía aplicar previamente a los ejecutables, lo que provocaba que estos permanecieran en intercambio después de que se cargaran por primera vez. mucho uso innecesario de disco / red (NFS) y CPU para programas que se usaron mucho. Sin embargo, ni Linux ni la mayoría (¿todos?) Los sistemas Unix admiten esto por más tiempo (se eliminó del kernel). ' s " sticky ", porque el ejecutable se atascó en el intercambio. Además, se usó para directorios como que describa.
  • En realidad, " muy usado o muy grande " sería una mejor descripción. Recuerde que mi universidad tenía el navegador web Netscape como " pegajoso " en su computadora HP-UX en 1995. Así que los programas pequeños que se usaban con mucha frecuencia (p. Ej. cron) y los programas grandes (por ejemplo, Netscape) fueron los principales candidatos para convertirse en " pegajosos ". En ambos casos, recargarlos constantemente desde el disco / NFS sería un desperdicio.
  • Los programas de bits pegajosos estaban destinados a permanecer residentes en la RAM, no en el intercambio (cargar una imagen desde un archivo de intercambio no es ' t mucho más rápido que cargarlo desde un disco del sistema de archivos). Fue diseñado para comandos esenciales a nivel de sistema operativo como ls. Obviamente, solo el superusuario podría establecer la parte adhesiva en un archivo. Se volvió menos importante después de que se introdujeron la memoria virtual y las bibliotecas compartidas, y especialmente cuando los buscapersonas se volvieron más inteligentes y pueden decidir dinámicamente qué páginas mantener residentes.
  • Y dado que la propiedad adhesiva no tenía sentido para un directorio, lo mismo Un poco de la máscara de permisos se interpretó más tarde para modificar la semántica tradicional de creación de archivos para directorios.
  • @alexis: Originalmente, los programas de bits adhesivos se mantenían en el espacio de intercambio. Esto fue mucho más rápido que leer desde el sistema de archivos porque la lectura de imágenes de archivos de intercambio eran sectores contiguos y, por lo tanto, se podían leer principalmente de forma asincrónica. Con los primeros sistemas de archivos, no había sectores " longitudes de ejecución " y la mayoría de los primeros controladores del sistema de archivos leían un sector a la vez, incluso si los sectores resultó ser consecutivo. El resultado en un PDP-40 fue que los programas pegajosos parecían cargarse instantáneamente mientras que los programas no pegajosos tardaban uno o dos segundos. Creo que solo teníamos ed pegajoso.

Respuesta

«El bit adhesivo aplicado a los programas ejecutables marcando el sistema para mantener una imagen del programa en la memoria después de que el programa terminó de ejecutarse.»

Creo que esa es una información bastante obsoleta, hoy en día la mayoría de los Unix modernos la ignoran. En Linux, el bit pegajoso solo es relevante para los directorios. Vea aquí y el artículo de Wikipedia bastante informativo.

De todos modos, en ese antiguo comportamiento, la imagen (solo el «código», no los datos) solo se guardaban en la memoria virtual; normalmente se intercambiaban, no en la memoria real, para ejecutarlos más rápido la próxima vez.

Respuesta

¿Qué son los bits adhesivos?

Un bit adhesivo es un bit de permiso que se establece en un directorio que permite solo al propietario del archivo dentro de t hat o el usuario raíz para eliminar o cambiar el nombre del archivo. Ningún otro usuario tiene los privilegios necesarios para eliminar el archivo creado por otro usuario.

Esta es una medida de seguridad para evitar la eliminación de carpetas críticas y su contenido (subdirectorios y archivos), aunque otros usuarios han permisos completos.

Comentarios

  • Eso ' no es correcto: en.wikipedia.org/wiki/Sticky_bit
  • @AB Me parece bastante acertado, casi hasta el punto de parafrasear el comienzo del artículo de Wikpedia que citas. ¿Qué ' tiene de malo?
  • Yo diría que la respuesta está incompleta. " Sticky " también denota que el ejecutable se mantendría en el espacio de intercambio para que se ejecute más rápido. Ahora, esto es historia antigua, pero en los sistemas de archivos más antiguos, los controladores solían leer un sector a la vez, incluso si los sectores eran consecutivos. Esto hizo que los ejecutables no pegajosos fueran lentos, la pegajosidad tenía mucho sentido en ese momento.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *