¿Qué indica el primer carácter de la cadena de modo UNIX?

29

Estoy muy familiarizado con los permisos de archivos de linux y los permisos especiales (sticky bit, suid, guid)

¿Pero no sé qué csignifica? ¿Es un permiso o algo más? He buscado en Google y no puedo entenderlo.

Aquí está el archivo del dispositivo que lo tiene.

steven@A215:~$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Dec 29 20:58 /dev/null
usuario169254
fuente
Parece que todos /devtienen ese permiso especial.
Seth
1
No es un permiso. Es el tipo de archivo.
Gilles 'SO- deja de ser malo'

Respuestas:

34

Significa que el archivo es un archivo especial de caracteres , básicamente un archivo de dispositivo que proporciona acceso en serie (a diferencia de un dispositivo especial de bloque como una unidad de disco). Por ejemplo, los terminales y los dispositivos en serie se interconectan a través de archivos especiales de caracteres ( /dev/tty1, /dev/ttyS0etc.)

Para una breve introducción a los archivos de dispositivos, consulte Linux / UNIX: Archivos de dispositivos [cyberciti.biz]. Para una discusión más detallada, vea esta respuesta de stackexchange Comprender / dev y sus subdirecciones y archivos . Para conocer las estructuras de datos subyacentes, consulte el Capítulo 4 de la Guía de programación del módulo del kernel de Linux: archivos de dispositivos de caracteres [tldp.org]

conductor de acero
fuente
3
Sin embargo, es bueno, pero será mejor si expande su respuesta un poco más y proporciona algunos enlaces útiles. :)
Saurav Kumar
3
@SauravKumar, siéntase libre de agregar algunos: no pude encontrar nada a un nivel adecuado (o no agregó nada o se sumergió directamente en la struct char_deviceprogramación del núcleo del código C)
steeldriver
@steeldriver Esto podría darte un comienzo :)
Seth
20

Un dispositivo de caracteres está marcado con a ccomo la primera letra de la cadena de modo. Del mismo modo, un dispositivo de bloque está marcado con un b,

$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Jan 21 21:50 /dev/null
$ ls -l /dev/sda
brw-rw---- 1 root disk 8, 0 Jan 21 21:50 /dev/sda

hay más de estos dispositivos especiales (archivos en el sentido de que todo es un archivo en Linux),

d : directory
s : socket
p : pipe
D : Door
l : symbolic link etc.

Vea esta página de wikipedia para más detalles.

souravc
fuente
¿hay alguna manera de hacer eso?
Edik Mkoyan
5

ls -lgenera una cadena de información UNIX de 10 símbolos conocida popularmente como cadena de permisos. p.ej

-rw-rw-r--  1 userName groupName   13200650 Dec 13 21:23 fileName

El primer carácter de la cadena de permisos o cadena de modo , conocido como el descriptor de archivo , indica el tipo de archivo y los nueve restantes tomados en grupos de tres indican los permisos para el archivo en cuestión, donde:

  • el primer grupo de tres caracteres (después del primer carácter entre los 10) indica los permisos del propietario,
  • el segundo grupo de tres permisos designados para el grupo,
  • el último grupo de tres designa permisos para otros (o el mundo).

Aquí, en el ejemplo anterior, el primer carácter / símbolo "-" indica un archivo normal.

Mientras que en los siguientes ejemplos,

crw-rw-rw- 1 root root 1, 3 Dec 29 20:58 /dev/null
crw-rw-rw- 1 root root 1, 5 Jan 13 20:56 /dev/zero

el primer carácter de las cadenas de permiso es "c" y, como se indicó anteriormente, es un indicador de tipo de archivo que indica un dispositivo de caracteres .

Además de -, calgunos otros descriptores de archivos son:

  • d -> directorio
  • l -> enlace simbólico
  • s -> Zócalo Unix
  • b -> dispositivo de bloque
  • p -> tubería
  • D -> Puerta

Referencias

preciso
fuente
2

El primer carácter en la primera columna, es decir, 'c' en crw-rw-rw- arriba, le dice a un usuario informado el tipo de archivo, en este caso un dispositivo de caracteres.

Maythux
fuente