Was bedeuten die Felder in der Ausgabe von ls -al?


218

Der ls -alBefehl zeigt die folgende Ausgabe;

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

Was sind alle Felder in der vorhergehenden Anzeige?


Was bedeutet L in diesen Berechtigungen .... Lrwxrwxrwx
Lin-Man

1
Bitte lesen Sie die zweite Antwort. Dies ist das Dateityp-Flag. Reguläre Datei (-), Verzeichnisdateien (d), Blockdatei (b), Gerätezeichendatei (c), Named-Pipe-Datei oder nur eine Pipe-Datei (p), Symbolic-Link-Datei (l), Socket-Datei (en). linuxnix.com/file-types-in-linux
Mr. White

Antworten:


215

In der Reihenfolge der Ausgabe;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • Dateiberechtigungen,
  • Anzahl der Links,
  • Besitzername,
  • Eigentümergruppe,
  • Dateigröße,
  • Zeitpunkt der letzten Änderung und
  • Datei- / Verzeichnisname

Dateiberechtigungen werden wie folgt angezeigt:

  • Das erste Zeichen ist -oder loder d, d gibt ein Verzeichnis an, eine Zeile stellt eine Datei dar, l ist ein Symlink (oder Softlink) - ein spezieller Dateityp
  • dreimal drei Zeichensätze, die Berechtigungen für Eigentümer, Gruppe und andere Benutzer angeben:
    • r = lesbar
    • w = beschreibbar
    • x = ausführbar

In Ihrem Beispiel -rwxrw-r--bedeutet dies, dass folgende Zeile angezeigt wird:

  • eine reguläre Datei (angezeigt als -)
  • lesbar, beschreibbar und ausführbar vom Eigentümer (rwx)
  • lesbar, beschreibbar, aber nicht gruppenweise ausführbar (rw-)
  • lesbar, aber nicht beschreibbar oder von anderen ausführbar (r--)

14
Es gibt mehr als 2 Dateitypen. -nicht ist nicht-Verzeichnisse , es ist normale Dateien , gibt es mehr als r, wund xBerechtigungen. Bei den meisten Systemen wird das erste Feld auch verwendet, um das Vorhandensein zusätzlicher Attribute wie ACLs, Sicherheitsattribute oder anderer erweiterter Attribute anzuzeigen. Beachten Sie auch, dass bei Symlinks das Ziel des Symlinks auch in der Ausgabe von angezeigt wird ls -l.
Stéphane Chazelas

12
Das erste Zeichen kann unterschiedliche Werte haben (z. B. bD , and p`). Es gibt eine vollständige Erklärung auf Wikipedia .
Asche999

13
Die Anzahl der Felder ist schlecht erklärt. Für Dateien bedeutet dies die Anzahl der festen Links. Für Verzeichnis: Anzahl der Verzeichnisse im Verzeichnis + dieses Verzeichnis selbst + 1.
Yanpas

13
Was number of linksbedeutet Vielen Dank.
tommy.carstensen

3
info lshas more info
ctrl-alt-delor

94

Die Ausgabe des Befehls "ls" hängt von der Version von "ls", den verwendeten Optionen, der verwendeten Plattform usw. ab. Aus Ihrem Beispiel geht hervor, dass Sie es von einem typischen un * x (wie Linux) aus verwenden. und wahrscheinlich mit einer typischen modernen "ls" -Version. In welchem ​​Fall:

-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

Ich bin mir nicht sicher, warum Ihre Linkanzahl für die von Ihnen aufgeführte Beispieldatei so hoch ist. Einige Plattformen haben eine seltsame Vorstellung davon, was ein "Link" ist. Dazu gehören normalerweise feste und symbolische Verknüpfungen sowie Verzeichniseinträge (weshalb Verzeichnisse häufig eine hohe Verknüpfungsanzahl aufweisen - das übergeordnete Verzeichnis verfügt über eine Verknüpfung, das Verzeichnis über eine Verknüpfung zu sich selbst im .Eintrag und jedes seiner Unterverzeichnisse verfügt über eine Verknüpfung ein link zurück via ..).

Einige Versionen und / oder Befehlszeilen-Flags listen die Anzahl der verwendeten Blöcke anstelle der Anzahl der Bytes auf. Ein Dateisystem mit einer Blockgröße von 1024 Bytes listet alle Größen bis zu 1024 Bytes als "1" auf, was bedeutet, dass 1 Block verwendet wird, von 1025 bis 2048 als "2", unter Verwendung von 2 Blöcken usw. Die Auflistung von Blockgrößen (ohne explizite Verwendung einer Befehlszeilenoption) ist auf den meisten modernen un * x-Computern jedoch selten.

Das Sonder- / Alternativzugriffsflag ist normalerweise ein Leerzeichen. Auf einigen Plattformen kann es jedoch verwendet werden, um darauf hinzuweisen, dass es Sonder- / Alternativzugriffsmodi gibt (z. B. ACLs und Sicherheitsbeschreibungen für WIN32 usw.) , Manpages, Info-Tool oder was-nicht.

Die Berechtigungs- (Modus-) Flags (UUUGGGOOO) sind drei Sätze von drei Zeichen, wobei der erste Satz "Benutzer" (dh Eigentümer), der zweite Satz "Gruppe" und der dritte Satz "Andere" (dh alle anderen) ist wer weder Eigentümer noch Gruppe ist). Die drei Berechtigungsflags in jeder Gruppe sind normalerweise roder -bedeuten, dass Benutzer / Gruppe / Andere die Datei lesen können ( r) oder nicht ( -), gefolgt von woder angegeben -, ob sie in die Datei schreiben können (Sie können Dateien haben, in die Sie schreiben können, kann aber nicht lesen, so seltsam das auch klingen mag!) und das dritte Zeichen ist ein 'catch-all'-Flag für andere Modi, normalerweise so etwas wie' xexecute '(für Verzeichnisse bedeutet dies, dass Sie versuchen können, auf den Verzeichnisinhalt zuzugreifen). oder -für niemanden.soder Sfür setuid- und / oder setgid-Programme oder andere weniger gebräuchliche Zeichen; In Ihrer "ls" -Dokumentation finden Sie Informationen zu den angezeigten Moduszeichen.

Das allererste Zeichen ist der Dateityp. In der Regel eine der folgenden Optionen: dfür Verzeichnis, lfür eine symbolische Verknüpfung (feste Verknüpfungen werden normalerweise ohne eigenes Sonderzeichen angezeigt) oder -für eine normale Datei. Es gibt viele andere, jedoch weniger häufig vorkommende Dateitypen für verschiedene Dateisysteme. Diese ersten zehn Zeichen (Dateityp und Berechtigungen) werden in Wikipedia behandelt . In Ihrer Dokumentation erfahren Sie auch hier genau, welche Dateitypen Ihr Befehl unterstützt und anzeigt.

Übrigens, wenn Sie keine Man / Info-Seite für "ls" selbst finden können ("man ls" / "info ls"), schauen Sie im Paket "coreutils" ("info coreutils") nach. Beachten Sie auch, dass Microsoft-Plattformen unter den gängigeren Plattformen dazu neigen, nicht sehr gut in die Ausgabe von "ls" zu übersetzen. Je nach der Version von "ls" werden in der Ausgabe daher möglicherweise ungewöhnliche Verhaltensweisen, Flags oder andere ungewöhnliche Informationen angezeigt kompiliert, worauf es ankam, etc.

Noch eine Einschränkung: Der Datei-Zeitstempel ist normalerweise das Datum und die Uhrzeit der letzten Änderung der Datei und nicht die Uhrzeit, zu der die Datei erstellt wurde. Tatsächlich gibt es auf einem un * x-ish-Dateisystem keine Aufzeichnung der Dateierstellungszeit. Das Feld ctime bedeutet NICHT "Erstellungszeit", wie dies bei FAT / NTFS-Dateisystemen der Fall ist, sondern die "Inode-Änderungszeit [C]" - die Zeit, zu der der Inode selbst zuletzt geändert wurde. Die Zeitstempel "mtime" (last [M] odified) und "atime" (last [A] ccesed / read) sind auf beiden Systemen gleich - obwohl die Genauigkeit (FAT hat zum Beispiel eine Granularität von zwei Sekunden) und die Zeitzone variieren können .


4
Welches System berücksichtigt symbolische Links in der Linkanzahl?
Celtschk

1
Entschuldigung, mir war nicht klar. Kein System, das ich kenne, enthält symbolische Links in der Linkanzahl . Ich meinte nur "was einen" Link "ausmacht". Beispielsweise wird in Windows ein "Shell-Link" als Link betrachtet, aber die meisten Konsolenbefehle behandeln ihn als normale Datei. Dies schließt ls ein, was es nicht in die Linkanzahl mit einbezieht. Soweit die Quellen für 'ls' nicht anderweitig geändert wurden, werden nach meinem besten Wissen nur die vom Betriebssystem für die Anzahl der Links gemeldeten Werte angezeigt.
CM

1
Das Einfügen von sym-links und .lnk-Dateien würde einen Rundgang durch das gesamte Verzeichnis erfordern. Nur um eine Datei aufzulisten. Es wäre waaaaaaaaaaaaay langsam. Es enthält nur einen festen Link. Dies ist die Anzahl der Verzeichniseinträge in der Datei. (Es wird vom Garbage Collector verwendet. Wenn der Referenzzähler auf Null geht, wird die Datei gelöscht.)
Strg-Alt-Delor

1
Normalerweise stimmte mein Verständnis von Betriebssystemen (OS) und Dateisystemen (FS) überein, aber ich habe von Zeit zu Zeit einige Merkwürdigkeiten bei bestimmten Betriebssystemen und FS festgestellt. Obwohl es nicht immer Teil des OS / FS ist; Manchmal sind die Kuriositäten das Ergebnis des Versuchs, ein Tool von einem Betriebssystem auf ein anderes zu portieren und es dann für die neue Plattform anzupassen - zum Beispiel die Unterschiede im CTIME-Bereich zwischen EXT und FAT / NTFS - und wie NTFS implementiert verschiedene Arten von "Links" (Shell-Links, Analysepunkte usw.), was es schwierig macht, eine genaue und einheitliche Definition zu geben.
CM

1
Zusätzlicher Hinweis: Die Dateigröße für ein Verzeichnis entspricht nur der Größe der Metadaten des Verzeichnisses, nicht der Gesamtgröße der Dateien unter dem Verzeichnis.
wisbucky

31

Auf GNU-Systemen wird es auf der lsInfoseite sehr detailliert beschrieben. Alles , was Sie tun mußten, um es zu finden: einfach offen man lsund am Ende Link zur vollständigen Dokumentation: info coreutils 'ls invocation'.

Hier ist ein Zitat davon:

`-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.

Danke! Ich war mir nicht sicher über die "Character Special File" Bedeutung des c in der ersten Spalte bei der Auflistung/dev/
Bruno Bronosky

3

Die erste Spalte ist der Dateimodus, die nächste Spalte ist die Nummer des Links, über den die Datei verfügt, die dritte und vierte Spalte sind der Name des Besitzers und die Gruppe, zu der die Datei gehört. In der nächsten Spalte wird die Anzahl der Bytes der Datei angegeben (bei einigen lsImplementierungen besteht die -hMöglichkeit, diese Informationen in einer benutzerfreundlicheren Form anzuzeigen). Die letzten beiden Spalten geben den Zeitstempel und den Namen der Datei an. Weitere Informationen finden Sie in der Manpage.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.