
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 search
para directorios y execute
archivos.
Esto es lo que no entiendo:
¿Cuáles son los 3 bits de modo restantes? ¿Están todos almacenados en el inodo?
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/su
muestra en un sistema:
Access: (4755/-rwsr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Existe la representación octal 4755
de 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
, ggg
y ooo
son 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_mode
enstat(2)
.
Respuesta2
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.
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...).