Co oznaczają pola w wyjściu ls -al?

218

ls -alPolecenia przedstawia następujące wyniki;

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

Jakie są wszystkie pola na poprzednim ekranie?

Mr. White
źródło
L oznacza co robi w tych permisions .... lrwxrwxrwx
Lin-man
1
Proszę przeczytać drugą odpowiedź. Jest to flaga typu pliku; Zwykły plik (-), pliki katalogu (d), plik bloku (b), plik urządzenia znakowego (c), plik potoku o nazwie lub tylko plik potoku (p), plik dowiązania symbolicznego (l), plik (y) gniazda. linuxnix.com/file-types-in-linux
Mr. White

Odpowiedzi:

215

W kolejności produkcji;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • uprawnienia do plików,
  • liczba linków,
  • imię właściciela,
  • grupa właścicieli,
  • rozmiar pliku,
  • czas ostatniej modyfikacji, oraz
  • nazwa pliku / katalogu

Uprawnienia do plików są wyświetlane w następujący sposób;

  • pierwszy znak to -lub llub dd oznacza katalog, linia reprezentuje plik, l to symlink (lub soft link) - specjalny typ pliku
  • trzy zestawy znaków, trzy razy, wskazujące uprawnienia właściciela, grupy i innych:
    • r = czytelny
    • w = zapisywalny
    • x = plik wykonywalny

W twoim przykładzie -rwxrw-r--oznacza to, że wyświetlana linia to:

  • zwykły plik (wyświetlany jako -)
  • czytelny, zapisywalny i wykonywalny przez właściciela (rwx)
  • czytelny, zapisywalny, ale nie wykonywalny przez grupę (rw-)
  • czytelne, ale nie do zapisu lub wykonywania przez inne (r--)
Flyk
źródło
14
Istnieją więcej niż 2 typy plików. -nie jest dla nie-katalogi , to dla zwykłych plików , nie więcej niż r, wi xuprawnienia. W większości systemów pierwsze pole służy również do wskazania obecności dodatkowych atrybutów, takich jak listy ACL, atrybuty bezpieczeństwa lub inne atrybuty rozszerzone. Zauważ również, że w przypadku dowiązań symbolicznych cel dowiązania symbolicznego jest również wyświetlany na wyjściu ls -l.
Stéphane Chazelas
12
Pierwszy znak może mieć różne wartości (np. bD , and p`). Istnieje pełne wyjaśnienie na Wikipedii .
ashes999
13
Liczba pól jest słabo wyjaśniona. W przypadku plików oznacza to liczbę twardych łączy. Dla katalogu: liczba katalogów w katalogu + ten katalog + 1.
yanpas
13
Co number of linksznaczy Dzięki.
tommy.carstensen
3
info lsma więcej informacji
ctrl-alt-delor
94

Wynik działania polecenia „ls” zależy od wersji „ls”, użytych opcji, zastosowanej platformy itp. Z twojego przykładu wynika, że ​​używasz go z typowego un * x (takiego jak Linux), i prawdopodobnie używając typowej nowoczesnej wersji „ls”. W którym to przypadku:

-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

Nie jestem pewien, dlaczego liczba linków jest tak wysoka dla wymienionego pliku przykładowego. Niektóre platformy mają dziwne pojęcie o tym, co stanowi „link”. Zazwyczaj obejmują one dowiązania twarde i dowiązania symboliczne, a także pozycje katalogu (dlatego katalogi często mają wysoką liczbę linków - jego rodzic ma jedno łącze, katalog ma link do siebie we .wpisie, a każdy z jego podkatalogów ma link z powrotem przez ..).

Niektóre wersje i / lub flagi wiersza poleceń zawierają liczbę użytych bloków zamiast liczby bajtów; system plików o rozmiarze bloku 1024 bajtów wyświetli wszystkie rozmiary do 1024 bajtów jako „1”, co oznacza, że ​​używany jest 1 blok, od 1025 do 2048 jako „2”, używając 2 bloków i tak dalej. Jednak domyślnie wyświetlanie rozmiarów bloków (bez jawnego korzystania z opcji wiersza poleceń) jest rzadkie na większości współczesnych maszyn un * x.

Flaga dostępu specjalnego / alternatywnego jest zwykle pustą przestrzenią, ale na niektórych platformach może być używana do wskazania, że ​​istnieją specjalne / alternatywne tryby dostępu (takie jak listy ACL i deskryptory zabezpieczeń w WIN32 itp.) I różnią się znacznie - zapoznaj się z instrukcją obsługi , strony podręcznika, narzędzie informacyjne lub cokolwiek innego.

Flagi uprawnień (tryb) (UUUGGGOOO) to trzy zestawy trzech znaków, przy czym pierwszym zestawem jest „Użytkownik” (tj. Właściciel), drugim zestawem jest „Grupa”, a trzecim zestawem „Inne” (tj. Wszyscy inni ; każdy, kto nie jest ani właścicielem, ani grupą). Trzy flagi uprawnień w każdym zestawie są zwykle rlub -oznaczają, że użytkownik / grupa / inni mogą odczytać plik ( r), czy nie ( -), a następnie wskazują wlub -wskazują, czy mogą zapisywać do pliku (możesz mieć pliki, do których możesz pisać, ale nie może czytać, choć może to zabrzmieć dziwnie!), a trzeci znak jest flagą „catch-all” dla innych trybów, zwykle coś w rodzaju xwykonania (dla katalogów oznacza to, że możesz próbować uzyskać dostęp do zawartości katalogu), lub -za brak.slub Sdla programów setuid i / lub setgid lub innych mniej powszechnych znaków; zobacz dokumentację „ls”, aby wyświetlić znaki trybu.

Wreszcie, pierwszym znakiem jest typ pliku; zazwyczaj jeden z: ddla katalogu, ldla dowiązania symbolicznego (dowiązania twarde pokazują się normalnie bez własnego specjalnego znaku) lub -dla normalnego pliku. Istnieje wiele innych, ale rzadziej spotykanych typów plików dla różnych systemów plików. Te pierwsze dziesięć znaków (typ pliku i uprawnienia) są omówione na Wikipedii . Ponownie, twoja dokumentacja powie ci dokładnie, jakiego rodzaju typy plików obsługuje i wyświetla twoje polecenie.

BTW, jeśli nie możesz znaleźć strony man / info dla samego „ls” („man ls” / „info ls”), spróbuj poszukać w pakiecie „coreutils” („info coreutils”). Należy również zauważyć, że wśród bardziej popularnych platform platformy Microsoft zwykle nie tłumaczą się zbyt dobrze na wynik „ls”, więc możesz zobaczyć dziwne zachowanie, flagi lub inne nietypowe informacje na wyjściu, w zależności od tego, jak twoja wersja „ls” była skompilowany, z czym był powiązany itp.

Jeszcze jedno zastrzeżenie: znacznikiem czasu pliku jest zazwyczaj data / czas ostatniej modyfikacji pliku , a nie godzina utworzenia pliku. W rzeczywistości w systemie plików un * x-ish nie ma zapisu czasu utworzenia pliku; pole ctime NIE oznacza „czasu tworzenia”, jak ma to miejsce w systemach plików FAT / NTFS, ale raczej oznacza „czas zmiany węzła [C]” - czas ostatniej modyfikacji samego i-węzła. Znaczniki czasu „mtime” (ostatnia [M] potwierdzona) i atime (ostatnie [A] skasowane / odczytane) są takie same w obu systemach - chociaż dokładność (na przykład FAT ma ziarnistość dwóch sekund) i strefa czasowa mogą się różnić .

CM
źródło
4
Który system zawiera dowiązania symboliczne w liczbie łączy?
celtschk
1
Przepraszam, nie byłem jasny .. Żaden system, który znam, nie zawiera dowiązań symbolicznych w liczbie linków . Miałem na myśli tylko „co stanowi„ link ””. Na przykład w systemie Windows „łącze do powłoki” jest uważane za łącze, ale większość poleceń konsoli traktuje go jak zwykły plik. Obejmuje to ls, który nie uwzględni go w liczbie linków. Zgodnie z moją najlepszą wiedzą, o ile źródła „ls” nie zostaną zmodyfikowane w inny sposób, zgłasza tylko to, co system operacyjny zgłasza dla liczby łączy.
CM
1
Dołączenie sym-links i plików .lnk wymagałoby przejścia całego katalogu. Wystarczy wymienić plik. To byłoby waaaaaaaaaaaaay powoli. Zawiera tylko twardy link. Jest to liczba pozycji katalogu w pliku. (jest używany przez moduł wyrzucający elementy bezużyteczne. Gdy liczba odwołań osiągnie zero, plik zostanie usunięty.)
ctrl-alt-delor
1
Normalnie moje rozumienie systemów operacyjnych (OS) i systemów plików (FS) zgadza się, ale od czasu do czasu widziałem pewne dziwactwa w niektórych systemach operacyjnych i FS. Chociaż nie zawsze jest to część OS / FS; Czasami osobliwości są wynikiem próby przeniesienia narzędzia z jednego systemu operacyjnego do drugiego, a następnie próby dostosowania go do nowej platformy - na przykład różnice w polu CTIME między EXT a FAT / NTFS - i to, jak NTFS implementuje różne rodzaje „linków” (linki powłoki, punkty ponownej analizy itp.), Co utrudnia podanie dokładnej i jednolitej definicji.
CM
1
Uwaga dodatkowa: rozmiar pliku dla katalogu to tylko rozmiar metadanych katalogu, a nie całkowity rozmiar plików w katalogu.
wisbucky
31

W systemach GNU jest to opisane na lsstronie informacyjnej w bardzo szczegółowy sposób. Wszystko co musiałem zrobić, to znaleźć: wystarczy otworzyć man lsi znaleźć w linku końcowego do pełnej dokumentacji: info coreutils 'ls invocation'.

Oto cytat z tego:

`-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.
wysypka
źródło
Dziękuję Ci! Nie byłam pewna co do znaczenia „pliku specjalnego” dla litery c w pierwszej kolumnie podczas umieszczania na liście/dev/
Bruno Bronosky
3

Pierwsza kolumna to tryb pliku, kolejna kolumna to numery dowiązań pliku, trzecia i czwarta to nazwa właściciela i grupy, do której należy plik. Następna kolumna podaje liczbę bajtów pliku (niektóre lsimplementacje mają -hopcję wyświetlania tych informacji w bardziej przyjaznej dla użytkownika formie). Dwie ostatnie kolumny wskazują znacznik czasu i nazwę pliku. Przeczytasz stronę podręcznika, aby uzyskać więcej informacji.

David Martínez
źródło