O que significam os campos na saída ls -al?

218

O ls -alcomando mostra a seguinte saída;

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

Quais são todos os campos na exibição anterior?

Sr. White
fonte
o que faz L significa nestes permisions .... lrwxrwxrwx
Lin-man
1
Por favor, leia a segunda resposta. É o sinalizador de tipo de arquivo; Arquivo regular (-), arquivos de diretório (d), arquivo de bloco (b), arquivo de dispositivo de caractere (c), arquivo de pipe nomeado ou apenas um arquivo de pipe (p), arquivo de link simbólico (l), arquivo (s) de soquete. linuxnix.com/file-types-in-linux
Sr. White

Respostas:

215

Na ordem de saída;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • permissões de arquivo
  • número de links,
  • nome do proprietário,
  • grupo de proprietários,
  • tamanho do arquivo,
  • hora da última modificação, e
  • nome do arquivo / diretório

As permissões de arquivo são exibidas da seguinte forma;

  • o primeiro caractere é -ou lou d, d indica um diretório, uma linha representa um arquivo, l é um link simbólico (ou link dinâmico) - tipo especial de arquivo
  • três conjuntos de caracteres, três vezes, indicando permissões para proprietário, grupo e outros:
    • r = legível
    • w = gravável
    • x = executável

No seu exemplo -rwxrw-r--, isso significa que a linha exibida é:

  • um arquivo regular (exibido como -)
  • legível, gravável e executável pelo proprietário (rwx)
  • legível, gravável, mas não executável por grupo (rw-)
  • legível, mas não gravável ou executável por outro (r--)
Flyk
fonte
14
Existem mais de 2 tipos de arquivos. -não é para os não-diretórios , é para arquivos regulares , há mais do que r, we xpermissões. Na maioria dos sistemas, o primeiro campo também é usado para indicar a presença de atributos extras, como ACLs, atributos de segurança ou outros atributos estendidos. Observe também que, para links simbólicos, o destino do link simbólico também é exibido na saída de ls -l.
Stéphane Chazelas
12
O primeiro caractere pode ter valores diferentes (por exemplo b, D , and p`). Há uma explicação completa na Wikipedia .
ashes999
13
O número de campos é mal explicado. Para arquivos, significa número de links físicos. Para diretório: número de diretórios diretório + este diretório si + 1. dentro
yanpas
13
O que number of linkssignifica isso ? Obrigado.
tommy.carstensen
3
info lstem mais informações
ctrl-alt-delor 5/0318
94

A saída do comando "ls" depende da versão do "ls", das opções usadas, da plataforma usada etc. Parece no seu exemplo que você o está usando de um un * x típico (como o Linux), e provavelmente usando uma versão típica "ls" moderna. Nesse 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

Não sei por que sua contagem de links é tão alta para o arquivo de exemplo que você listou. Algumas plataformas têm uma noção estranha do que constitui um "link". Isso geralmente inclui links físicos e simbólicos, além de entradas de diretório (e é por isso que os diretórios costumam ter contagens altas de links - seu pai tem um link, o diretório tem um link para si mesmo na .entrada e cada um de seus subdiretórios possui um link de volta via ..).

Algumas versões e / ou sinalizadores de linha de comando listarão o número de blocos usados ​​em vez do número de bytes; um sistema de arquivos com um tamanho de bloco de 1024 bytes listará todos os tamanhos de até 1024 bytes como "1", significando que 1 bloco será usado, de 1025 a 2048 como "2", usando 2 blocos e assim por diante. Mas listar os tamanhos dos blocos por padrão (sem usar explicitamente uma opção de linha de comando) é raro na maioria das máquinas un * x modernas.

O sinalizador de acesso especial / alternativo geralmente é um espaço em branco, mas em algumas plataformas, ele pode ser usado para indicar que existem modos de acesso especiais / alternativos (como ACLs e descritores de segurança no WIN32, etc.) e variam amplamente - consulte o manual , páginas de manual, ferramenta de informações ou outras informações.

Os sinalizadores de permissões (modo) (UUUGGGOOO) são três conjuntos de três caracteres, onde o primeiro conjunto é "Usuário" (ou seja, Proprietário), o segundo conjunto é "Grupo" e o terceiro conjunto é "Outros" (ou seja, todo mundo ; quem não é proprietário nem grupo). Os três sinalizadores de permissão em cada conjunto são tipicamente rou -significam que o Usuário / Grupo / Outros podem ler o arquivo ( r) ou não ( -), seguidos wou -indicando se podem gravar no arquivo (você pode ter arquivos nos quais pode gravar, mas não pode ler, por mais estranho que isso possa parecer!), e o terceiro caractere é um sinalizador de "pegar tudo" para outros modos, geralmente algo como xfor execute (para diretórios, significa que você pode tentar acessar o conteúdo do diretório), ou -para nenhum.sou Spara programas setuid e / ou setgid, ou outros caracteres menos comuns; consulte a documentação do "ls" para os caracteres de modo que serão exibidos.

Finalmente, o primeiro caractere é o tipo de arquivo; normalmente um de: dpara diretório, lpara um link simbólico (links físicos são exibidos normalmente sem um caractere especial próprio) ou -para um arquivo normal. Existem muitos outros tipos de arquivos, mas menos comumente vistos, para vários sistemas de arquivos. Esses dez primeiros caracteres (tipo de arquivo e permissões) são discutidos na Wikipedia . Mais uma vez, sua documentação informará exatamente que tipo de arquivo seu comando suporta e exibe.

BTW, se você não conseguir encontrar uma página de manual / info para o "ls" ("man ls" / "info ls"), tente procurar no pacote "coreutils" ("info coreutils"). Observe também que, entre as plataformas mais comuns, as plataformas da Microsoft tendem a não se traduzir muito bem na saída "ls"; portanto, você pode ver comportamentos estranhos, sinalizadores ou outras informações incomuns na saída, dependendo de como sua versão do "ls" foi compilado, contra o que estava vinculado etc.

Mais uma ressalva: o registro de data e hora do arquivo geralmente é a data / hora em que o arquivo foi modificado pela última vez , não a hora em que o arquivo foi criado. De fato, em um sistema de arquivos un * x-ish, não há registro do tempo de criação do arquivo; o campo ctime NÃO significa "hora de criação" como nos sistemas de arquivos FAT / NTFS, mas sim "tempo de alteração do inode [C]" - a hora em que o próprio inode foi modificado pela última vez. Os carimbos de data e hora "mtime" (último [M] odificado) e atime (último [A] acessado / lido) são os mesmos nos dois sistemas - embora a precisão (FAT tenha uma granularidade de dois segundos, por exemplo) e o fuso horário possam variar .

CM
fonte
4
Qual sistema inclui links simbólicos na contagem de links?
Celtschk
1
Desculpe, eu não estava claro .. Nenhum sistema que eu conheço inclui links simbólicos na contagem de links . Eu só quis dizer "o que constitui um 'link'". Por exemplo, no Windows ', um "link de shell" é considerado um link, mas a maioria dos comandos do console o trata como um arquivo normal. Isso inclui ls, que não o incluirá na contagem de links. De acordo com o meu conhecimento, a menos que as fontes de 'ls' sejam modificadas, ele só relata o que o sistema operacional relata para a contagem de links.
CM
1
A inclusão de links simbólicos e arquivos .lnk exigiria uma caminhada de toda a tentativa de diretório. Apenas para listar um arquivo. Seria waaaaaaaaaaaay lento. Inclui apenas o link físico. Esse é o número de entradas de diretório que o arquivo possui. (ele é usado pelo coletor de lixo Quando a contagem de referência chega a zero, em seguida, o arquivo é excluído..)
ctrl-alt-Delor
1
Normalmente, meu entendimento de sistemas operacionais (SO) e sistemas de arquivos (FS) concordaria, mas eu tenho visto algumas esquisitices de tempos em tempos com determinados SOs e FSs. Embora nem sempre faça parte do OS / FS; Às vezes, as estranhezas são o resultado de tentar portar uma ferramenta de um sistema operacional para outro e, em seguida, tentar ajustá-la para a nova plataforma - as diferenças no campo CTIME entre EXT e FAT / NTFS, por exemplo - e como O NTFS implementa diferentes tipos de "links" (links de shell, pontos de nova análise, etc.), dificultando uma definição exata e uniforme.
CM
1
Nota adicional: o tamanho do arquivo para um diretório é apenas o tamanho dos metadados do diretório, não o tamanho total dos arquivos no diretório.
22618 wisbucky
31

Nos sistemas GNU, é descrito na lspágina de informações de uma maneira muito detalhada. Tudo o que tinha que fazer para encontrá-lo: basta abrir man lse encontrar na ligação final a documentação completa: info coreutils 'ls invocation'.

Aqui está uma citação:

`-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.
pressa
fonte
Obrigado! Eu não tinha certeza sobre o "arquivo especial de caracteres", significando do c na primeira coluna quando a lista/dev/
de Bruno Bronosky
3

A primeira coluna é o modo de arquivo, a próxima coluna é o número de links que o arquivo possui, a terceira e a quarta são o nome do proprietário e o grupo ao qual o arquivo pertence. A próxima coluna indica o número de bytes do arquivo (algumas lsimplementações têm a -hopção de ver essas informações de uma forma mais amigável). As duas últimas colunas indicam o registro de data e hora e o nome do arquivo. Você leu a página de manual para mais informações.

David Martínez
fonte