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

182

O comando ls -al mostra a seguinte saída;

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

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

    
por Mr. White 29.11.2013 / 20:45

4 respostas

179

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 l ou d , d indica um diretório, uma linha representa um arquivo, l é um link simbólico (ou link flexível) - 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 pelo grupo (rw -)
  • legível mas não gravável ou executável por outro (r -)
por 29.11.2013 / 20:59
83

A saída do comando "ls" depende da versão de "ls", das opções usadas, da plataforma usada, etc. Parece que você está usando o exemplo de um un * x (como Linux), e provavelmente usando uma típica versão "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 ao certo 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". Eles geralmente incluem links físicos e links simbólicos, bem como entradas de diretório (é por isso que os diretórios costumam ter altas contagens de links - seu pai tem um link, o diretório tem um link para si mesmo no . entrada, e cada um de seus subdiretórios tem 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 é usado, de 1025 a 2048 como "2", usando 2 blocos e assim por diante. Mas listar tamanhos de bloco por padrão (sem usar explicitamente uma opção de linha de comando) é raro na maioria das máquinas modernas un * x.

O sinalizador de acesso especial / alternativo é normalmente um espaço em branco, mas em algumas plataformas pode ser usado para indicar modos de acesso especiais / alternativos (como ACLs e descritores de segurança no WIN32, etc) e varia muito - consulte seu manual, man pages, info tool ou o que não.

Os sinalizadores de permissões (modo) (UUUGGGOOO) são três conjuntos de três caracteres, onde o primeiro conjunto é "Usuário" (isto é, Proprietário), o segundo conjunto é "Grupo" eo terceiro é "Outros" (ou seja , todos os outros, quem não é proprietário nem grupo). Os três sinalizadores de permissões em cada conjunto são normalmente r ou - , o que significa que o Usuário / Grupo / Outros pode ler o arquivo ( r ) ou não ( - ), seguido por w ou - indicando se eles podem gravar no arquivo (você pode ter arquivos que você pode escrever, mas não pode ler, por mais estranho que isso possa parecer!), e o terceiro caractere é um sinalizador "pega-tudo" para outros modos, tipicamente algo como x para executar (para diretórios, significa que você pode tentar acessar o conteúdo do diretório) ou - para nenhum. Às vezes você pode encontrar um s ou S para programas setuid e / ou setgid, ou outros caracteres menos comuns; veja sua documentação "ls" para os caracteres de modo que serão mostrados.

Finalmente, o primeiro caractere é o tipo de arquivo; normalmente um de: d para o diretório, l para um link simbólico (links físicos mostram normalmente sem um caractere especial) 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 . Novamente, sua documentação lhe dirá exatamente que tipo de arquivo seu comando suporta e exibe.

BTW, se você não encontrar uma página man / info para o próprio "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 traduzir muito bem para a saída "ls", portanto, você pode observar comportamentos estranhos, sinalizadores ou outras informações incomuns na saída, dependendo de como sua versão de "ls" foi compilado, o que foi ligado, 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, e 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 "tempo de criação" como nos sistemas de arquivos FAT / NTFS, mas significa "inode [C] hange time" - a hora em que o próprio inode foi modificado pela última vez. Os carimbos de hora "mtime" (último [M] odificado) e atime (último [A] ccesed / read) são os mesmos em ambos os sistemas - embora a precisão (FAT tem uma granularidade de dois segundos, por exemplo) e fuso horário possam variar .

    
por 05.07.2014 / 22:31
27

Nos sistemas GNU, ele é descrito na página ls info de uma maneira muito detalhada. Tudo o que você precisava fazer para encontrá-lo: basta abrir man ls e encontrar no link 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.
    
por 29.11.2013 / 20:59
3

A primeira coluna é o modo de arquivo, a próxima coluna é o número de links que o arquivo possui, o terceiro e o quarto são o nome do proprietário e o grupo ao qual o arquivo pertence. A coluna seguinte diz o número de bytes do arquivo (algumas implementações ls têm uma opção -h para ver essas informações de forma mais amigável). As duas últimas colunas indicam o registro de data e hora e o nome do arquivo. Você leu a man page para mais informações.

    
por 29.11.2013 / 21:01

Tags