Que signifient les champs dans la sortie ls -al?

218

La ls -alcommande affiche la sortie suivante.

-rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe

Quels sont tous les champs dans l'affichage précédent?

M. White
la source
que signifie L dans ces permisions .... lrwxrwxrwx
Lin-man
1
S'il vous plaît lire la deuxième réponse. C'est l'indicateur de type de fichier; Fichier normal (-), fichiers de répertoire (d), fichier de bloc (b), fichier de caractères (c), fichier de canal nommé ou tout simplement un fichier de canal (p), fichier de lien symbolique (l), fichier (s) de socket. linuxnix.com/file-types-in-linux
M. White

Réponses:

215

Dans l'ordre de sortie;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • autorisations de fichiers,
  • nombre de liens,
  • le nom du propriétaire,
  • groupe de propriétaires,
  • taille du fichier,
  • l'heure de la dernière modification, et
  • nom du fichier / répertoire

Les autorisations de fichier sont affichées comme suit:

  • le premier caractère est -ou lou d, d indique un répertoire, une ligne représente un fichier, l est un lien symbolique (ou un lien symbolique) - type de fichier spécial
  • trois jeux de caractères, trois fois, indiquant les autorisations pour le propriétaire, le groupe et les autres:
    • r = lisible
    • w = accessible en écriture
    • x = exécutable

Dans votre exemple -rwxrw-r--, cela signifie que la ligne affichée est:

  • un fichier normal (affiché comme -)
  • lisible, accessible en écriture et exécutable par le propriétaire (rwx)
  • lisible, accessible en écriture, mais non exécutable par groupe (rw-)
  • lisible mais non accessible en écriture ou exécutable par autre (r--)
Flyk
la source
14
Il y a plus de 2 types de fichiers. -Ce n'est pas pour les non-répertoires , c'est pour les fichiers ordinaires , il y a plus de r, wet les xpermissions. Sur la plupart des systèmes, le premier champ est également utilisé pour indiquer la présence d'attributs supplémentaires tels que des listes de contrôle d'accès, des attributs de sécurité ou d'autres attributs étendus. Notez également que pour les liens symboliques, la cible du lien symbolique est également affichée dans le résultat de ls -l.
Stéphane Chazelas
12
Le premier caractère peut avoir différentes valeurs (par exemple b, D , and p`). Il y a une explication complète sur Wikipedia .
ashes999
13
Le nombre de champs est mal expliqué. Pour les fichiers, cela signifie le nombre de liens physiques. Pour le répertoire: nombre de répertoires dans le répertoire + ce répertoire lui-même + 1.
Yanpas
13
Qu'est-ce que ça number of linksveut dire? Merci.
tommy.carstensen
3
info lsa plus d'infos
ctrl-alt-delor
94

La sortie de la commande "ls" dépend de la version de "ls", des options utilisées, de la plate-forme utilisée, etc. Il ressort de votre exemple que vous l'utilisez depuis un * x typique (tel que Linux), et probablement en utilisant une version "ls" moderne typique. Dans quel cas:

-rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe
?UUUGGGOOOS   00  UUUUUU GGGGGG ####    ^-- date stamp and file name are obvious ;-)
^ ^  ^  ^ ^    ^      ^      ^    ^
| |  |  | |    |      |      |    \--- File Size
| |  |  | |    |      |      \-------- Group Name (for example, Users, Administrators, etc)
| |  |  | |    |      \--------------- Owner Acct
| |  |  | |    \---------------------- Link count (what constitutes a "link" here varies)
| |  |  | \--------------------------- Alternative Access (blank means none defined, anything else varies)
| \--\--\----------------------------- Read, Write and Special access modes for [U]ser, [G]roup, and [O]thers (everyone else)
\------------------------------------- File type flag

Je ne sais pas pourquoi votre nombre de liens est si élevé pour l'exemple de fichier que vous avez cité. Certaines plates-formes ont une notion étrange de ce qui constitue un "lien". Celles-ci incluent généralement des liens physiques et des liens symboliques, ainsi que des entrées de répertoire (c’est pourquoi les répertoires ont souvent un nombre de liens élevé - son parent a un lien, le répertoire a un lien vers lui-même dans l’ .entrée et chacun de ses sous-répertoires a un lien retour via ..).

Certaines versions et / ou drapeaux de ligne de commande listeront le nombre de blocs utilisés au lieu du nombre d'octets; Un système de fichiers avec une taille de bloc de 1024 octets listera toutes les tailles allant jusqu'à 1024 octets sous la forme "1", ce qui signifie qu'un bloc est utilisé, de 1025 à 2048 comme "2", en utilisant 2 blocs, etc. Cependant, la liste des tailles de blocs par défaut (sans utiliser explicitement une option de ligne de commande) est rare sur les machines un * x les plus modernes.

L'indicateur d'accès spécial / alternatif est généralement un espace vide, mais sur certaines plates-formes, il peut être utilisé pour indiquer qu'il existe des modes d'accès spéciaux / alternatifs (tels que les listes de contrôle d'accès et les descripteurs de sécurité sur WIN32, etc.) et varie considérablement - consultez votre manuel , pages de manuel, outil d’information ou autre chose.

Les drapeaux de permissions (mode) (UUUGGGOOO) sont trois ensembles de trois caractères, où le premier est "Utilisateur" (c'est-à-dire le propriétaire), le deuxième est "Groupe" et le troisième est "Autres" (c'est-à-dire, tout le monde toute personne qui n'est ni propriétaire ni groupe). Les trois indicateurs d’autorisations de chaque ensemble sont rou -signifient généralement que l’utilisateur / le groupe / les autres peuvent lire le fichier ( r) ou non ( -), suivi de wou -indiquant s’ils peuvent écrire dans le fichier (vous pouvez avoir des fichiers sur lesquels vous pouvez écrire, mais ne peut pas lire, aussi étrange que cela puisse paraître!), et le troisième caractère est un indicateur "fourre-tout" pour les autres modes, généralement similaire xà execute (pour les répertoires, cela signifie que vous pouvez essayer d'accéder au contenu du répertoire), ou -pour aucun.sou Spour les programmes setuid et / ou setgid, ou d'autres caractères moins communs; voyez votre documentation "ls" pour les caractères de mode qu'il montrera.

Enfin, le tout premier caractère est le type de fichier; typiquement un de: dpour répertoire, lpour un lien symbolique (les liens physiques s'affichent normalement sans leur propre caractère), ou -pour un fichier normal. Il existe de nombreux autres types de fichiers, mais moins courants, pour différents systèmes de fichiers. Ces dix premiers caractères (type de fichier et autorisations) sont discutés sur Wikipedia . Encore une fois, votre documentation vous indiquera exactement le type de types de fichiers que votre commande prend en charge et affiche.

En passant, si vous ne trouvez pas de page man / info pour "ls" lui-même ("man ls" / "info ls"), essayez de regarder dans le paquetage "coreutils" ("info coreutils"). Notez également que, parmi les plates-formes les plus courantes, les plates-formes Microsoft ont tendance à ne pas très bien traduire en sortie "ls", vous pouvez donc voir un comportement étrange, des indicateurs ou d'autres informations inhabituelles dans la sortie, en fonction de l'état de votre version de "ls" compilé, contre quoi il était lié, etc.

Autre mise en garde: l'horodatage du fichier correspond généralement à la date et à l'heure de la dernière modification du fichier , et non à l'heure à laquelle le fichier a été créé. En fait, sur un système de fichiers peu * x-ish, il n'y a pas d'enregistrement de la date de création du fichier; le champ ctime NE SIGNIFIE PAS "heure de création" comme sur les systèmes de fichiers FAT / NTFS, mais signifie plutôt "temps de traitement inode [C]" - l'heure à laquelle l'inode a été modifié pour la dernière fois. Les horodatages "mtime" (dernier [M] odifié) et atime (dernier [A] ccesed / read) sont les mêmes sur les deux systèmes - bien que la précision (FAT présente une granularité de deux secondes, par exemple) et que le fuseau horaire puisse varier .

CM
la source
4
Quel système inclut des liens symboliques dans le nombre de liens?
celtschk
1
Désolé, je n’étais pas clair. Aucun système à ma connaissance ne comprend de liens symboliques dans le nombre de liens . Je ne parlais que de "ce qui constitue un" lien "". Par exemple, dans Windows ', un "lien shell" est considéré comme un lien, mais la plupart des commandes de console le traiteront comme un fichier normal. Cela inclut ls, qui ne l' inclura pas dans le nombre de liens. Autant que je sache, à moins que les sources de 'ls' ne soient modifiées, le système ne signale que ce que le système d'exploitation signale pour le nombre de liens.
CM
1
L'inclusion de sym-links et de fichiers .lnk nécessiterait une exploration complète du répertoire. Juste pour lister un fichier. Ce serait waaaaaaaaaaaaaay lent. Il ne comprend que le lien dur. C'est le nombre d'entrées de répertoire que le fichier a. (Il est utilisé par le ramasse-miettes. Lorsque le décompte de références atteint zéro, le fichier est supprimé.)
ctrl-alt-delor
1
Normalement, ma compréhension des systèmes d'exploitation (OS) et des systèmes de fichiers (FS) est du même avis, mais j'ai parfois constaté des anomalies avec certains systèmes d'exploitation et certains FS. Bien que cela ne fasse pas toujours partie de l'OS / FS; Parfois, les bizarreries résultent de la tentative de transfert d’un outil d’un système d’exploitation à un autre, puis de l’ajustement à la nouvelle plate-forme - les différences dans le champ CTIME entre EXT et FAT / NTFS, par exemple - et comment NTFS implémente différents types de "liens" (liens shell, points d'analyse, etc.), ce qui rend difficile la définition précise et uniforme.
CM
1
Remarque supplémentaire: la taille de fichier d'un répertoire correspond uniquement à la taille des métadonnées du répertoire et non à la taille totale des fichiers du répertoire.
Wisbucky
31

Sur les systèmes GNU, il est décrit lsde manière très détaillée dans la page d’information. Tout ce que vous deviez faire pour trouver: il suffit d' ouvrir man lset trouver dans le lien final à la documentation complète: info coreutils 'ls invocation'.

En voici une citation:

`-l'
`--format=long'
`--format=verbose'
     In addition to the name of each file, print the file type, file
     mode bits, number of hard links, owner name, group name, size, and
     timestamp (*note Formatting file timestamps::), normally the
     modification time.  Print question marks for information that
     cannot be determined.

     Normally the size is printed as a byte count without punctuation,
     but this can be overridden (*note Block size::).  For example, `-h'
     prints an abbreviated, human-readable count, and
     `--block-size="'1"' prints a byte count with the thousands
     separator of the current locale.

     For each directory that is listed, preface the files with a line
     `total BLOCKS', where BLOCKS is the total disk allocation for all
     files in that directory.  The block size currently defaults to 1024
     bytes, but this can be overridden (*note Block size::).  The
     BLOCKS computed counts each hard link separately; this is arguably
     a deficiency.

     The file type is one of the following characters:

    `-'
          regular file

    `b'
          block special file

    `c'
          character special file

    `C'
          high performance ("contiguous data") file

    `d'
          directory

    `D'
          door (Solaris 2.5 and up)

    `l'
          symbolic link

    `M'
          off-line ("migrated") file (Cray DMF)

    `n'
          network special file (HP-UX)

    `p'
          FIFO (named pipe)

    `P'
          port (Solaris 10 and up)

    `s'
          socket

    `?'
          some other file type

     The file mode bits listed are similar to symbolic mode
     specifications (*note Symbolic Modes::).  But `ls' combines
     multiple bits into the third character of each set of permissions
     as follows:

    `s'
          If the set-user-ID or set-group-ID bit and the corresponding
          executable bit are both set.

    `S'
          If the set-user-ID or set-group-ID bit is set but the
          corresponding executable bit is not set.

    `t'
          If the restricted deletion flag or sticky bit, and the
          other-executable bit, are both set.  The restricted deletion
          flag is another name for the sticky bit.  *Note Mode
          Structure::.

    `T'
          If the restricted deletion flag or sticky bit is set but the
          other-executable bit is not set.

    `x'
          If the executable bit is set and none of the above apply.

    `-'
          Otherwise.

     Following the file mode bits is a single character that specifies
     whether an alternate access method such as an access control list
     applies to the file.  When the character following the file mode
     bits is a space, there is no alternate access method.  When it is
     a printing character, then there is such a method.

     GNU `ls' uses a `.' character to indicate a file with an SELinux
     security context, but no other alternate access method.

     A file with any other combination of alternate access methods is
     marked with a `+' character.
se ruer
la source
Je vous remercie! J'étais incertain de la signification du "fichier spécial de personnage" du c dans la première colonne lors de l'inscription/dev/
Bruno Bronosky
3

La première colonne est le mode de fichier, la colonne suivante est les numéros de lien que le fichier a, les troisième et quatrième sont le nom du propriétaire et le groupe auquel le fichier appartient. La colonne suivante indique le nombre d'octets du fichier (certaines lsimplémentations offrent la -hpossibilité d'afficher ces informations sous une forme plus conviviale). Les deux dernières colonnes indiquent l'horodatage et le nom du fichier. Vous liriez la page de manuel pour plus d’informations.

David Martínez
la source