Cosa significano i campi nell'output ls -al?


218

Il ls -alcomando mostra il seguente output;

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

Quali sono tutti i campi nella schermata precedente?


cosa significa L in queste autorizzazioni ... lrwxrwxrwx
Lin-man

1
Si prega di leggere la seconda risposta. È il flag del tipo di file; File normale (-), file di directory (d), file di blocco (b), file di dispositivo caratteri (c), file di pipe con nome o solo un file di pipe (p), file di collegamento simbolico (l), file di socket. linuxnix.com/file-types-in-linux
Mr. White

Risposte:


215

Nell'ordine di uscita;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • permessi sui file,
  • numero di collegamenti,
  • nome del proprietario,
  • gruppo proprietario,
  • dimensione del file,
  • ora dell'ultima modifica e
  • nome file / directory

Le autorizzazioni per i file vengono visualizzate come segue;

  • primo carattere è -o lo d, d indica una directory, una riga rappresenta un file, l è un link simbolico (o soft link) - speciale tipo di file
  • tre serie di caratteri, tre volte, che indicano le autorizzazioni per proprietario, gruppo e altro:
    • r = leggibile
    • w = scrivibile
    • x = eseguibile

Nel tuo esempio -rwxrw-r--, ciò significa che la linea visualizzata è:

  • un file normale (visualizzato come -)
  • leggibile, scrivibile ed eseguibile dal proprietario (rwx)
  • leggibile, scrivibile, ma non eseguibile per gruppo (rw-)
  • leggibile ma non scrivibile o eseguibile da altri (r--)

14
Esistono più di 2 tipi di file. -non è per i non-directory , è per i file normali , c'è più di r, we xle autorizzazioni. Sulla maggior parte dei sistemi, il primo campo viene utilizzato anche per indicare la presenza di attributi extra come ACL, attributi di sicurezza o altri attributi estesi. Si noti inoltre che per i collegamenti simbolici, anche la destinazione del collegamento simbolico viene visualizzata nell'output di ls -l.
Stéphane Chazelas,

12
Il primo carattere può avere valori diversi (ad es. b, D , and p`). C'è una spiegazione completa su Wikipedia .
ashes999,

13
Il numero di campi è spiegato male. Per i file significa numero di collegamenti reali. Per directory: numero di directory all'interno della directory + questa directory stessa + 1.
yanpas

13
Cosa number of linkssignifica? Grazie.
tommy.carstensen,

3
info lsha maggiori informazioni
ctrl-alt-delor

94

L'output del comando "ls" dipende dalla versione di "ls", dalle opzioni utilizzate, dalla piattaforma utilizzata, ecc. Sembra dal tuo esempio che lo stai usando da un tipico un * x (come Linux), e probabilmente usando una tipica versione moderna "ls". In quale caso:

-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

Non sono sicuro del perché il numero di collegamenti sia così elevato per il file di esempio che hai elencato. Alcune piattaforme hanno una strana idea di ciò che costituisce un "collegamento". Questi di solito includono collegamenti reali e collegamenti simbolici, nonché voci di directory (motivo per cui le directory hanno spesso un elevato numero di collegamenti: il suo genitore ha un collegamento, la directory ha un collegamento a se stesso nella .voce e ognuna delle sue sottodirectory ha un link indietro via ..).

Alcune versioni e / o flag della riga di comando elencheranno il numero di blocchi utilizzati anziché il numero di byte; un filesystem con una dimensione di blocco di 1024 byte elencherà tutte le dimensioni fino a 1024 byte come "1", il che significa che viene utilizzato 1 blocco, da 1025 a 2048 come "2", utilizzando 2 blocchi e così via. Ma elencare le dimensioni dei blocchi per impostazione predefinita (senza usare esplicitamente un'opzione della riga di comando) è raro sulla maggior parte delle macchine un * x moderne.

Il flag di accesso speciale / alternativo è generalmente uno spazio vuoto, ma su alcune piattaforme può essere usato per indicare che ci sono modalità di accesso speciali / alternative (come ACL e descrittori di sicurezza su WIN32, ecc.) E varia ampiamente - consultare il manuale , pagine man, strumento di informazione o cosa no.

I flag delle autorizzazioni (mode) (UUUGGGOOO) sono tre set di tre caratteri, in cui il primo set è "Utente" (ovvero, Proprietario), il secondo set è "Gruppo" e il terzo set è "Altri" (ovvero tutti gli altri ; chiunque non sia né proprietario né gruppo). I tre flag delle autorizzazioni in ogni set sono in genere ro indicano che -l'utente / gruppo / altri possono leggere il file ( r) o meno ( -), seguiti da wo che -indicano se possono scrivere sul file (puoi avere file su cui puoi scrivere, ma non può leggere, per quanto strano possa sembrare!), e il terzo carattere è un flag "catch-all" per altre modalità, in genere qualcosa come xper eseguire (per le directory, significa che puoi provare ad accedere al contenuto della directory), o -per nessuno.so Sper programmi setuid e / o setgid o altri caratteri meno comuni; consultare la documentazione "ls" per i caratteri della modalità che mostrerà.

Infine, il primo carattere è il tipo di file; in genere uno di: dper directory, lper un collegamento simbolico (i collegamenti reali vengono visualizzati normalmente senza un carattere speciale) o -per un file normale. Esistono molti altri tipi di file, ma meno comunemente visti, per vari filesystem. Questi primi dieci caratteri (tipo di file e autorizzazioni) sono discussi su Wikipedia . Ancora una volta, la tua documentazione ti dirà esattamente quale tipo di file supporta e visualizza il tuo comando.

A proposito, se non riesci a trovare una pagina man / info per "ls" ("man ls" / "info ls"), prova a cercare nel pacchetto "coreutils" ("info coreutils"). Inoltre, tra le piattaforme più comuni, le piattaforme Microsoft tendono a non tradursi molto bene nell'output di "ls", quindi nell'output potrebbero apparire comportamenti strani, flag o altre informazioni insolite, a seconda di come era la versione di "ls" compilato, a cosa era collegato, ecc.

Un altro avvertimento: il timestamp del file è in genere la data / ora dell'ultima modifica del file , non l'ora in cui il file è stato creato. In effetti, su un filesystem un * x-ish, non c'è traccia del tempo di creazione del file; il campo ctime NON significa "tempo di creazione" come nei file system FAT / NTFS, ma piuttosto "tempo di hange inode [C]" - l'ora in cui l'inode stesso è stato modificato l'ultima volta. I timestamp "mtime" (last [M] odified) e atime (last [A] ccesed / read) sono gli stessi su entrambi i sistemi - anche se la precisione (FAT ha una granularità di due secondi, per esempio) e il fuso orario può variare .


4
Quale sistema include collegamenti simbolici nel conteggio dei collegamenti?
Celtschk,

1
Siamo spiacenti, non ero chiaro .. Nessun sistema che conosco include collegamenti simbolici nel conteggio dei collegamenti . Intendevo solo "ciò che costituisce un" collegamento ". Ad esempio, in Windows "un" collegamento shell "è considerato un collegamento, ma la maggior parte dei comandi della console lo considera come un normale file. Questo include ls, che non lo includerà nel conteggio dei collegamenti. Per quanto ne so, a meno che le fonti per 'ls' non vengano altrimenti modificate, riporta solo ciò che il sistema operativo riporta per il conteggio dei collegamenti.
CM,

1
Includere sym-link e file .lnk richiederebbe una passeggiata dell'intero tentativo di directory. Solo per elencare un file. Sarebbe waaaaaaaaaaaaay lentamente. Include solo il collegamento reale. Questo è il numero di voci della directory presenti nel file. (viene utilizzato dal Garbage Collector. Quando il conteggio dei riferimenti arriva a zero, il file viene eliminato.)
ctrl-alt-delor

1
Normalmente, la mia comprensione dei sistemi operativi (OS) e dei file system (FS) sarebbe d'accordo, ma ho notato alcune stranezze di volta in volta con determinati sistemi operativi e FS. Anche se, non fa sempre parte del sistema operativo / FS; A volte, le stranezze sono il risultato del tentativo di eseguire il porting di uno strumento da un sistema operativo all'altro, e quindi di provare a modificarlo per la nuova piattaforma - le differenze nel campo CTIME tra EXT e FAT / NTFS, per esempio - e come NTFS implementa diversi tipi di "collegamenti" (collegamenti shell, punti di analisi, ecc.), Rendendo difficile dare una definizione esatta e uniforme.
CM

1
Nota aggiuntiva: la dimensione del file per una directory è solo la dimensione dei metadati della directory, non la dimensione totale dei file nella directory.
Wisbucky

31

Sui sistemi GNU, è descritto nella lspagina delle informazioni in modo molto dettagliato. Tutto quello che doveva fare per trovarlo: basta aprire man lse trovare nel link fine alla documentazione completa: info coreutils 'ls invocation'.

Ecco la citazione da esso:

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

Grazie! Non ero sicuro del significato del "file speciale del personaggio" della c nella prima colonna quando elencato/dev/
Bruno Bronosky,

3

La prima colonna è la modalità file, la colonna successiva è il numero di collegamenti che il file ha, la terza e la quarta sono il nome del proprietario e il gruppo a cui appartiene il file. La colonna successiva indica il numero di byte del file (alcune lsimplementazioni hanno -hun'opzione per vedere queste informazioni in una forma più user-friendly). Le ultime due colonne indicano la data e l'ora e il nome del file. Leggeresti la pagina man per maggiori informazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.