Explicación detallada de la diferencia entre archivos ordinarios y archivos de directorio en Linux

Los permisos de archivo generalmente se pueden considerar 0 123 456 789, un total de diez dígitos:

0: indica el tipo de archivo del archivo. En Windows se utiliza una tecnología de asociación de archivos para asociar la aplicación correspondiente a través de la extensión, de manera que al hacer doble clic en un archivo se puede lograr el propósito de llamar a la aplicación correspondiente para abrirlo, lo cual es sencillo y rápido. Sin embargo, para los usuarios, la ventaja es la conveniencia, pero la desventaja es que oculta algo sustancial: el tipo real del archivo es realmente irrelevante para su extensión.

Por ejemplo: un archivo de texto puro, puedo nombrarlo "mi voz cantando.mp3", y luego haga doble clic debajo de win, llamará al reproductor de música correspondiente para abrir, el resultado es obvio, debe ser incorrecto. A su vez, también puedo nombrar un archivo MP3 real "Roster.txt", hacer doble clic en él debajo de win y, por lo general, llamar al editor de texto correspondiente para abrirlo, pero dije que también sabes que la pantalla debe estar distorsionada.

Los dos ejemplos anteriores sirven para ilustrar el hecho de que el verdadero tipo de archivo no tiene nada que ver con su extensión.

Entonces, ¿cómo se sabe el tipo de archivo sin conocer la extensión del archivo? Este es el caso de Linux.

Solo existen los siguientes tipos de archivos en Linux:

1.-, archivos ordinarios.

2.d, archivo de directorio, d es la abreviatura de directorio.

3.l, archivo de enlace suave, también conocido como archivo de enlace simbólico, s es la abreviatura de suave o simbólico.

4. b, archivo de bloque, es un tipo de archivo de dispositivo (hay otro tipo), b es la abreviatura de bloque.

5.c, un archivo de caracteres, también es un tipo de archivo de dispositivo (este es el segundo tipo), yc es un archivo de caracteres.

Los sistemas Linux más primitivos son solo estos cinco, por lo que el lugar 0 solo puede ser uno de los cinco anteriores.

Entonces tendrás preguntas,

1. ¿Qué tipo de archivo MP3 es? Respuesta: archivos ordinarios.

2. ¿Qué tipo de archivo binario es? Respuesta: archivos ordinarios.

3. ¿Qué tipo de archivo de texto es? Respuesta: archivos ordinarios.

4. ¿Por qué no hay representación de tipos para enlaces físicos? Respuesta: Aunque solo hay una diferencia de palabras entre el enlace físico y el enlace flexible, la esencia es completamente diferente. El enlace físico también es un archivo. Su tipo es archivo ordinario.

¿Por qué lo anterior dice tanto? El propósito es allanar el camino para el conocimiento a continuación.

Bueno, 123-456-789 es fácil de decir. Cualquiera que conozca esta área sabe que son solo la diferencia entre el grupo de pertenencia de usuarios y los otros tres grupos. Podemos usar cualquiera de ellos como ejemplo para explicar rwx.

r : leer , w : escribir , x : ejecutar。

¿Cómo debemos recordar la diferencia entre los dos? ? ¿Es la memorización de memoria? NO.

Deberíamos saber por qué y por qué. A continuación, trato de comenzar con la naturaleza del archivo de consulta y el contenido para explicar por qué los permisos rwx tienen diferentes significados para los dos.

Para comprender lo que se dice a continuación, se necesita conocimiento del sistema de archivos de Linux para allanar el camino. Si no conoce el concepto de inodo, básicamente sufrirá.

Nuevamente, el contenido del archivo no tiene nada que ver con el nombre del archivo utilizado en ese momento; el tipo de archivo no tiene nada que ver con el nombre del archivo en ese momento.

Ver el contenido de un archivo es en realidad un proceso como este:

Por ejemplo, usó este comando: cat /tmp/abc.txt

1. Solo pasó una ruta absoluta, /tmp/abc.txt. El sistema primero necesita conocer el inodo del archivo /tmp/abc.txt. ¿Cómo saberlo?

2. Recuerde una regla, el directorio padre de un archivo (registro) conocerá el número de inodo del archivo. (En este momento, me pregunto si se ha dado cuenta de algo, no se preocupe, luego mire hacia abajo)

3. Luego obtengo el nombre del archivo "/tmp/abc.txt", primero tengo que conocer la situación del directorio / tmp, y para conocer la situación del directorio / tmp, tengo que conocer la situación del / directorio primero, así puedo comenzar desde / El directorio comienza (asumiendo que el número de inodo del directorio / es 0, y esto está codificado), y luego ir a una tabla llamada inode-table para encontrar el campo de datos al que apunta por el número de inodo 0, y luego puede encontrar algunos en el campo de datos Similar a lo siguiente: (Parece una tabla, ¿no? En realidad, puede imaginar que el archivo de directorio es una tabla que almacena los nombres de archivo dentro it y el número de inodo correspondiente al nombre del archivo)

Nombre de archivo número de inodo

papelera 18

var 19

tmp 20

……

Bueno, encontramos el número de inodo correspondiente al nombre de archivo "/ tmp" de "/", este archivo de directorio, que es 20. (Asumiendo)

4. Luego usamos el número de inodo 20 para encontrar el campo de datos correspondiente a 20 en la tabla de inodo, y luego desde el campo de datos, encontraremos una tabla: (¿Por qué es una tabla de nuevo? Porque "/" es un directorio, "/ Tmp" también es un directorio, por lo que, por supuesto, el campo de datos sigue siendo una tabla)

Nombre de archivo número de inodo

abc.txt 8899

bbb.mp3 10088

kkk.jpg 20000

……

Bueno, encontramos el número de inodo de /tmp/abc.txt, que es 8899. De acuerdo con la regla anterior, ¿tenemos que encontrar el campo de datos correspondiente al No. 8899 en la tabla de inodo nuevamente? Bien, eso es todo.

5. Encontramos el campo de datos correspondiente al número de inodo 8899, por lo que encontraremos los siguientes contenidos:

"Abcdefg" (asumiendo que el contenido del archivo es así)

...

Hay preguntas de nuevo, ¿porque Mao no es un reloj esta vez?

Respuesta: El archivo /tmp/abc.txt ya no es un archivo de directorio, es un archivo normal y normalmente almacena algunas cadenas.

Reflejado en esencia:

Archivo ordinario: almacena datos ordinarios, generalmente una cadena.

Archivo de directorio: se almacena una tabla, que es la relación de mapeo entre todos los nombres de archivo e inodos en el archivo de directorio.

Obtenga el número de inodo de este archivo del directorio principal ----> Busque el punto de inicio y otra información en el campo de datos correspondiente al número de inodo en la tabla de la tabla de inodo ----> Vaya a este campo de datos para leer el contenido del archivo (el contenido de un archivo común es generalmente una cadena y el contenido de un archivo de directorio es una tabla)

Si realmente comprende lo que dije anteriormente, entonces se vuelve mucho más fácil.

La clave es acceder a cualquier archivo, depende de si puede obtener el número de inodo. Es fácil obtener el inodo, simplemente tome el número de inodo para buscar en la tabla de inodo, y finalmente encuentre el campo de datos, luego podrá encontrar el contenido del archivo

Entonces, todo el proceso no solo está relacionado con los permisos de este archivo, sino también con los permisos de su directorio principal (y el directorio principal del directorio principal ...) (si puede obtener el inodo de este archivo)

Reflejado en el orden: (En otras palabras, esta es la apariencia más práctica)

======

Para archivos ordinarios, el significado de rwx es:

r: Puede obtener el nombre y el contenido de este archivo normal.

w: Puede modificar el contenido y el nombre de archivo de este archivo. El archivo se puede eliminar, pero el usuario recibirá un mensaje si desea eliminar el archivo protegido contra escritura.

x: si el archivo tiene permiso para ejecutarse.

======

Para los archivos de catálogo, el significado de rwx es:

rx: puede ingresar al directorio cd para obtener el estado de almacenamiento en el directorio, pero no puede modificar el nombre del archivo (directorio) almacenado en el directorio, ni puede crear nuevos archivos y directorios en el directorio

-wx: puede ingresar al directorio cd, pero no puede ver el almacenamiento en el directorio (ls no está disponible), puede agregar, modificar y eliminar archivos en el directorio. Cat puede leer el contenido del archivo o directorio en el directorio. Dado que esos archivos no se almacenan en el directorio, solo puede obtener el contenido del archivo adivinando, cat + nombre del archivo sin saberlo, por lo que este sigue siendo el caso No es confidencial.

-X: Puede ingresar al directorio cd, no puede ver la situación de almacenamiento y no puede agregar, modificar o eliminar archivos en el directorio. Pero aún puede obtener el contenido de los archivos en este directorio a través de cat + xx (adivinar).

rw-: No se puede ingresar al directorio cd, solo el nombre del archivo y el nombre del directorio se pueden obtener con ls, porque no se puede obtener el número de inodo de estos archivos y, por supuesto, no se puede obtener el contenido de los archivos en el directorio. No puede agregar, modificar ni eliminar archivos en este directorio.

======

Finalmente, resumamos:

1. Aunque el archivo de directorio es un archivo (bueno, el concepto central de Linux es Todo es archivo), pero el contenido de almacenamiento es solo una tabla, sobre la relación de mapeo entre el nombre del archivo y el número de inodo.

2. No existe una relación de centavo entre la extensión del archivo y el tipo de archivo.

3. No existe una relación de centavo entre el nombre de archivo del archivo y el contenido de almacenamiento real del archivo.

4. Conocer el proceso de búsqueda del contenido de un archivo.

5. ¿Por qué es más rápido mover archivos desde el mismo sistema de archivos que entre sistemas de archivos?

Respuesta: Debido a que solo necesita modificar la relación correspondiente entre la ruta y el inodo en un directorio determinado, no necesita reescribir el campo de datos.

6. ¿Qué es un disco duro de 500G que compré, siempre es inferior a 500G después de formatearlo?

Respuesta: Como puede verse en este artículo, inode-table también necesita ocupar espacio de almacenamiento, por lo que inode-table ocupa gran parte de la parte que falta.

Supongo que te gusta

Origin blog.csdn.net/weixin_44324367/article/details/110733047
Recomendado
Clasificación