¿Cuáles son los últimos 3 bits en los bits del modo de permiso de UNIX?

¿Cuáles son los últimos 3 bits en los bits del modo de permiso de UNIX?

Entiendo que hay 12 bits de permiso de los cuales hay 3 grupos de 3 bits para cada usuario, grupo y otros, que son RWX respectivamente. RW son de lectura y escritura, pero para X es searchpara directorios y executearchivos.

Esto es lo que no entiendo:

  1. ¿Cuáles son los 3 bits de modo restantes? ¿Están todos almacenados en el inodo?

  2. Sé que el directorio de archivos en sí también se considera un archivo, ya que todas las cosas en UNIX son archivos (¿es esto cierto?), pero dado que los sistemas UNIX usan ACL para representar el sistema de archivos, entonces el sistema de archivos es una lista de nombre de archivo-número_inodo pares. ¿Dónde almacena un directorio de archivos su propio número de inodo y nombre de archivo?

Respuesta1

stat /bin/sumuestra en un sistema:

Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Existe la representación octal 4755de los 12 bits de modo. El número corresponde a los bits:

octal    4   7   5   5
bits   100 111 101 101
       sst uuu ggg ooo
       ug  rwx rwx rwx

Donde uuu, gggy oooson los bits de permiso para el usuario, grupo y otros. El grupo restante (el primero en orden) contiene los bits setuid ( su), setgid ( sg) y sticky ( ).t

Los bits setuid y sticky a menudo no se mencionan, ya que son cero para la mayoría de los archivos. Todavía están ahí para cada archivo, guardados junto con los demás.


Si realmente nos ponemos manos a la obra, algunos sistemas de archivos e interfaces almacenan el archivotipoa lo largo de los bits de modo, en los bits aún más altos. Lo anterior solo representa 12 bits, por lo que con un campo de 16 bits, sobran 4. Véase, por ejemplo, eldescripción de st_modeenstat(2).

Respuesta2

  1. Los tres bits restantes representan los bits setuid, setgid y sticky; verComprender los permisos y tipos de archivos de UNIXpara detalles. Todos estos están almacenados en el inodo.

  2. De hecho, un directorio es una especie de archivo que almacena una lista de nombres y sus correspondientes inodos. El nombre y el inodo propios de un directorio se almacenan en su directorio principal; el directorio raíz es un caso especial, normalmente es un inodo fijo en el sistema de archivos (inodo 2 en Ext4) y, por supuesto, siempre tiene un nombre /(lo que termina siendo relativo a su punto de montaje...).

información relacionada