Qu'est-ce que le premier caractère de la chaîne de mode UNIX indique?

29

Je suis très familier avec les autorisations de fichiers Linux et les perms spéciales (sticky bit, suid, guid)

Mais je ne sais pas ce que cela csignifie? Est-ce une permission ou autre chose? J'ai fait une recherche sur Google et je ne peux pas le comprendre.

Voici le fichier de périphérique qui l'a.

steven@A215:~$ ls -l /dev/null
crw-rw-rw- 1 root root 1, 3 Dec 29 20:58 /dev/null
user169254
la source
On dirait que tout le monde /deva cette permission spéciale.
Seth
1
Ce n'est pas une permission. C'est le type de fichier.
Gilles 'SO- arrête d'être méchant'

Réponses:

34

Cela signifie que le fichier est un fichier spécial de caractères - essentiellement un fichier de périphérique qui fournit un accès série (par opposition à un périphérique spécial de bloc tel qu'un lecteur de disque). Par exemple, les terminaux et les périphériques série sont interfacés via des fichiers spéciaux de caractères (/dev/tty1 , /dev/ttyS0etc.).

Pour une brève introduction aux fichiers de périphérique, voir Linux / UNIX: Fichiers de périphérique [cyberciti.biz]. Pour une discussion plus détaillée, voir cette réponse stackexchange Comprendre / dev et ses sous-répertoires et fichiers . Pour en savoir plus sur les structures de données sous-jacentes, reportez-vous au chapitre 4 du Guide de programmation du module du noyau Linux: Fichiers de périphériques de caractères [tldp.org]

tournevis
la source
3
Bien, mais ce sera mieux si vous développez un peu plus votre réponse et fournissez des liens utiles. :)
Saurav Kumar
3
@SauravKumar, n'hésitez pas à en ajouter - je n'ai rien trouvé à un niveau approprié (rien n'a été ajouté ou a plongé directement dans la struct char_deviceprogrammation du noyau de code C)
steeldriver
@steeldriver Ceux - ci pourraient vous donner un début :)
Seth
20

Un périphérique de caractères est marqué d'un ccomme première lettre de la chaîne de mode. De même, un périphérique bloc est marqué d'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

il y a plus de ces périphériques spéciaux (fichiers dans le sens où tout est un fichier sous Linux),

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

Voir cette page wikipedia pour plus de détails.

souravc
la source
y a-t-il un moyen de faire ça?
Edik Mkoyan
5

ls -lgénère une chaîne d'informations UNIX de 10 symboles connue sous le nom de chaîne d'autorisation. par exemple

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

Le premier caractère de la chaîne d'autorisation ou de la chaîne de mode , appelé descripteur de fichier , indique le type de fichier et les neuf autres, pris par groupes de trois, indiquent les autorisations pour le fichier concerné, où:

  • le premier groupe de trois caractères (après le premier caractère parmi les 10) indique les autorisations du propriétaire,
  • le deuxième groupe de trois autorisations désignées pour le groupe,
  • le dernier groupe de trois désigne les autorisations pour les autres (ou le monde).

Ici, dans l'exemple ci-dessus, le premier caractère / symbole le "-" indique un fichier normal.

Dans les exemples suivants,

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

le premier caractère des chaînes d'autorisation est "c" et comme indiqué ci-dessus, c'est un indicateur de type de fichier qui indique un périphérique de caractères .

Outre le -, ccertains autres descripteurs de fichiers sont:

  • d -> répertoire
  • l -> lien symbolique
  • s -> Prise Unix
  • b -> bloquer l'appareil
  • p -> pipeline
  • D -> Porte

Les références:

précis
la source
2

Le premier caractère de la première colonne, c'est-à-dire «c» dans crw-rw-rw- ci-dessus, indique à un utilisateur averti le type du fichier, dans ce cas un périphérique de caractères.

Maythux
la source