¿Qué es la letra "t" en la salida de "ls -ld / tmp"?

80

Al ejecutar el comando ls -ld /tmp , la salida sería:

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

Entonces tengo dos preguntas principales:

  • ¿Cuál es la letra t después de los permisos?
  • Hasta donde sé /tmp se usa para crear archivos temporales relacionados con diferentes usuarios en el sistema, entonces ¿cómo es que tiene permiso rwxrwxrwx (777)?

Esto me parece incorrecto Necesito su ayuda para entender qué está pasando aquí.

    
pregunta Community 11.03.2014 - 12:33

3 respuestas

101

Entonces, ¿cuál es el bit adhesivo?

Un bit adhesivo es un bit de permiso que se establece en un directorio que permite que solo el propietario del archivo dentro de ese directorio, el propietario del directorio o el usuario raíz elimine o cambie 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 tienen permisos completos.

¿Por qué /tmp tiene el t bit pegajoso?

El directorio /tmp puede ser utilizado por diferentes usuarios de Linux para crear archivos temporales. Ahora, ¿qué sucede si un usuario elimina / renombra un archivo creado por otro usuario en este directorio?

Bueno, para evitar este tipo de problemas, se usa el concepto de bit adhesivo. Entonces, para eso se da un 777 pero preservar el bit adhesivo no es una mala idea.

¿Cómo puedo configurar el bit adhesivo para un directorio?

Estableceré un bit adhesivo en un directorio llamado test en mi Escritorio.

Forma simbólica ( t representa el bit adhesivo):

chmod o+t ~/Desktop/test

o

chmod +t ~/Desktop/test

Modo numérico / octal (1, bit adhesivo como valor 1 en la primera posición)

chmod 1757 ~/Desktop/test

Ahora probemos los resultados:

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Para eliminar / eliminar un bit adhesivo

chmod o-t ~/Desktop/test

Ahora probemos los resultados:

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Fuente: "¿Qué es un Bit pegajoso y cómo configurarlo en Linux?" en The Linux Juggernaut

    
respondido por el Maythux 11.03.2014 - 12:37
22
  

Un bit adhesivo es un bit de permiso que se establece en un archivo o directorio que permite que solo el propietario del archivo / directorio o el usuario raíz elimine o cambie el nombre del archivo. Ningún otro usuario tiene privilegios para eliminar el archivo creado por otro usuario.

Algunas veces sucede que necesita un directorio Linux que pueda ser utilizado por todos los usuarios del sistema Linux para crear archivos. Los usuarios pueden crear, eliminar o cambiar el nombre de los archivos según su conveniencia en este directorio.

  

Ahora, ¿qué ocurre si un usuario elimina (o renombra) accidentalmente o deliberadamente un archivo creado por algún otro usuario en este directorio?

     

Bueno, para evitar este tipo de problemas, se usa el concepto de bit adhesivo. Como / tmp se usa para este propósito. Para evitar el escenario anterior, / tmp usa un bit adhesivo.

Por ejemplo:

mkdir demo
chmod 777 demo

También creé dos archivos con diferentes usuarios en esta carpeta con el permiso 777.

ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo

ls -l demo
-rwxrwxrwx 1 abhi abhi    0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu   0 Mar 11 18:15 file2

Ahora activa el bit adhesivo en este

 chmod +t demo/
 ls -ld demo
 drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo

Ahora, ¿qué sucede si un usuario (abhi) quiere cambiar el nombre del segundo usuario (anshu)

mv /home/guru/demo/file2  /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to  '/home/guru/demo/file3': Operation not   permitted  

El origen del bit adhesivo

En Linux, el bit adhesivo solo tiene el uso descrito anteriormente, en los directorios. Históricamente, se usaba para algo completamente diferente en archivos regulares, y de ahí es de donde proviene el nombre.

  

Cuando se ejecuta un programa, lleva tiempo cargar el programa en la memoria antes de que el usuario pueda comenzar a usarlo. Si un programa, por ejemplo un editor, se utiliza con frecuencia por los usuarios, el tiempo de retraso de inicio era una sobrecarga en ese momento.

     

Para mejorar este retraso de tiempo, se introdujo el bit adhesivo. El sistema operativo verificó que si el bit adhesivo en un ejecutable está activado, entonces el segmento de texto del ejecutable se mantuvo en el espacio de intercambio. Esto facilitó la carga del archivo ejecutable en la memoria RAM cuando el programa se ejecutó de nuevo, lo que minimiza el retraso de tiempo.

Los sistemas modernos como Linux administran su caché de ejecutables y otros archivos automáticamente y no necesitan el bit adhesivo para eso.

Fuente: "Concepto de Linux Sticky Bit explicado con ejemplos" en The Geek Stuff

    
respondido por el g_p 11.03.2014 - 13:06
2

Un stickybit es un método alternativo para que los directorios compartidos no se eliminen accidentalmente. Cuando un directorio tiene un stickybit, solo el propietario o la raíz pueden eliminarlo, incluso si cada usuario puede tomar todos los demás permisos.

/tmp es el directorio más compartido entre procesos y usuarios y para eso contiene el stickybit para garantizar que ningún usuario pueda eliminar el directorio, incluso si el permiso es 777 , y debe ser así para dar la capacidad a los usuarios y procesos para usar el directorio sin conflictos en los permisos.

    
respondido por el user259474 18.03.2014 - 11:14

Lea otras preguntas en las etiquetas