ls -l lesen
-rwxr-xr-x. 1 root root 4096 Oct 18 12:00 script.sh
│└┬┘└┬┘└┬┘│ │ │ │ │ └────┬────┘ └───┬───┘
│ │ │ │ │ │ │ │ │ │ └ Name (und -> Ziel bei Symlinks)
│ │ │ │ │ │ │ │ │ └ Änderungszeit (Jahr, wenn älter als 6 Monate)
│ │ │ │ │ │ │ │ └ Größe in Bytes (oder Major, Minor bei Geräten)
│ │ │ │ │ │ │ └ Gruppe
│ │ │ │ │ │ └ Besitzer
│ │ │ │ │ └ Anzahl harter Links
│ │ │ │ └ . = SELinux-Kontext, + = ACL, @ = erweiterte Attribute (macOS)
│ │ │ └ Andere: r-x
│ │ └ Gruppe: r-x
│ └ Besitzer: rwx
└ Typ: - Datei, d Verzeichnis, l Symlink, c zeichenorientiertes Gerät, b Blockgerät, p Pipe, s Socket Was Leute verwirrt
- Linkzahl: wie viele Verzeichniseinträge auf den Inode zeigen. Bei einem Verzeichnis ist sie 2 plus die Zahl der Unterverzeichnisse, weil das
..jedes Unterverzeichnisses zählt. Eine Datei mit Zahl 3 hat irgendwo zwei weitere harte Links. - Größe eines Verzeichnisses: die Größe seiner Eintragsliste (4096 auf ext4), nicht die Summe seines Inhalts. Dafür gibt es
du -sh. - s, S, t, T im Rechte-String sind die setuid-, setgid- und Sticky-Bits; klein heißt, das darunterliegende Ausführen-Bit ist auch gesetzt, groß heißt, es ist es nicht (meist ein Fehler).
- Symlink-Rechte sind immer
lrwxrwxrwxund werden ignoriert; es zählen die des Ziels. - Zeiten: ls zeigt mtime (Inhalt geändert).
statzeigt auch atime (zuletzt gelesen, oft durchnoatimedeaktiviert), ctime (Inode geändert: chmod, chown, rename) und die Erstellungszeit auf Dateisystemen, die sie führen.
stat
stat datei gibt alles aus, was der Inode enthält: den Modus oktal und symbolisch, uid/gid mit Namen, Inode-Nummer, Gerät, Blockzahl (in 512-Byte-Einheiten, sodass eine Sparse-Datei weniger Blöcke zeigt, als ihre Größe bräuchte) und die vier Zeitstempel. stat -c '%a %U %G %n' * gibt nur aus, was Sie verlangen; stat -f beschreibt stattdessen das Dateisystem.
Fragen
Was bedeutet der Punkt am Ende der Rechte?
Auf der Datei ist ein SELinux-Sicherheitskontext gesetzt (auf Fedora, RHEL, CentOS zu sehen). ls -Z zeigt ihn. Ein + bedeutet stattdessen, dass eine Zugriffskontrollliste vorhanden ist; getfacl zeigt sie.
Warum hat ein Verzeichnis die Linkzahl 2?
Sein eigener Eintrag im Elternverzeichnis plus sein „.“-Eintrag. Jedes Unterverzeichnis fügt über sein „..“ eins hinzu. Ein Verzeichnis mit Linkzahl 7 hat also fünf Unterverzeichnisse.
Was ist der Unterschied zwischen mtime und ctime?
mtime ändert sich, wenn sich der Inhalt ändert; ctime ändert sich, wenn sich der Inode ändert (Inhalt, Rechte, Besitzer, Linkzahl). ctime lässt sich mit touch nicht setzen, was es für die Forensik nützlich macht.
Wie sehe ich versteckte Dateien und Größen in lesbaren Einheiten?
ls -lah: -a zeigt Dotfiles, -h gibt Größen als K, M, G aus. Mit -t nach Zeit sortieren und mit -r umkehren.