Что означают поля в выводе ls -al?


218

Команда ls -alпоказывает следующий вывод;

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

Каковы все поля на предыдущем дисплее?


что L означает в этих разрешениях .... lrwxrwxrwx
Лин-

1
Пожалуйста, прочитайте второй ответ. Это флаг типа файла; Обычный файл (-), файлы каталога (d), файл блока (b), файл символьного устройства (c), файл именованного канала или просто файл канала (p), файл символических ссылок (l), файл (ы) сокетов. linuxnix.com/file-types-in-linux
Мистер Уайт,

Ответы:


215

В порядке вывода;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • права доступа к файлу,
  • количество ссылок,
  • имя владельца,
  • группа владельцев,
  • размер файла,
  • время последней модификации и
  • имя файла / каталога

Права доступа к файлам отображаются следующим образом;

  • первый символ - -или lили d, d - каталог, строка - файл, l - символическая ссылка (или мягкая ссылка) - специальный тип файла.
  • три набора символов, три раза, с указанием прав доступа для владельца, группы и других:
    • r = читаемый
    • w = доступный для записи
    • x = исполняемый файл

В вашем примере -rwxrw-r--это означает, что строка отображается так:

  • обычный файл (отображается как -)
  • читаемый, записываемый и исполняемый владельцем (rwx)
  • читаемый, записываемый, но не исполняемый группой (rw-)
  • читаемый, но не доступный для записи или исполняемый другим (r--)

14
Существует более 2 типов файлов. -не для не-каталогов , это для обычных файлов , есть больше r, wи xразрешения. В большинстве систем первое поле также используется для указания наличия дополнительных атрибутов, таких как ACL, атрибуты безопасности или другие расширенные атрибуты. Также обратите внимание, что для символьных ссылок цель символической ссылки также отображается в выходных данных ls -l.
Стефан Шазелас

12
Первый символ может иметь разные значения (например b, D , and p`). В Википедии есть полное объяснение .
ashes999

13
В число полей плохо объяснил. Для файлов это означает количество жестких ссылок. Для каталога: количество каталогов внутри каталога + сам этот каталог + 1.
yanpas

13
Что number of linksзначит? Благодарю.
tommy.carstensen

3
info lsимеет больше информации
Ctrl-Alt-Delor

94

Вывод команды "ls" зависит от версии "ls", используемых опций, используемой платформы и т. Д. Из вашего примера видно, что вы используете его из типичного un * x (например, Linux), и, вероятно, используя типичную современную версию "ls". В таком случае:

-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

Я не уверен, почему ваш счетчик ссылок настолько велик для файла примера, который вы перечислили. Некоторые платформы имеют странное представление о том, что представляет собой «ссылка». Они обычно включают в себя жесткие ссылки и символические ссылки, а также записи в каталогах (именно поэтому каталоги часто имеют большое количество ссылок - у его родителя есть одна ссылка, каталог имеет ссылку на себя в .записи, и каждый из его подкаталогов имеет ссылка через ..).

Некоторые версии и / или флаги командной строки будут перечислять количество используемых блоков вместо количества байтов; файловая система с размером блока 1024 байта будет перечислять все размеры до 1024 байтов как «1», что означает, что используется 1 блок, от 1025 до 2048 как «2», с использованием 2 блоков и так далее. Но перечисление размеров блоков по умолчанию (без явного использования параметра командной строки) встречается редко на большинстве современных машин un * x.

Флаг специального / альтернативного доступа обычно является пустым пространством, но на некоторых платформах его можно использовать для указания того, что существуют специальные / альтернативные режимы доступа (например, ACL и дескрипторы безопасности в WIN32 и т. Д.), И он широко варьируется - обратитесь к руководству пользователя. , страницы руководства, информационный инструмент, или что-нет.

Флаги полномочий (режима) (UUUGGGOOO) представляют собой три набора из трех символов, где первый набор - «Пользователь» (т. Е. Владелец), второй набор - «Группа», а третий набор - «Другие» (т. Е. Все остальные). любой, кто не является ни владельцем, ни группой). Три флага разрешений в каждом наборе обычно rили -означают, что Пользователь / Группа / Другие могут читать файл ( r) или нет ( -), после чего wили -указывает, могут ли они записывать в файл (у вас могут быть файлы, в которые вы можете записать, но не может читать, как бы странно это ни звучало!), а третий символ - это флаг «ловить все» для других режимов, обычно что-то вроде xвыполнения (для каталогов это означает, что вы можете попытаться получить доступ к содержимому каталога), или -ни за что.sили Sдля программ setuid и / или setgid, или других менее распространенных символов; см. документацию "ls" для символов режима, которые он покажет.

Наконец, самый первый символ - это тип файла; обычно один из: dдля каталога, lдля символической ссылки (жесткие ссылки обычно отображаются без специального символа) или -для обычного файла. Существует много других, но менее часто встречающихся типов файлов для различных файловых систем. Эти первые десять символов (тип файла и права доступа) обсуждаются в Википедии . Опять же, ваша документация скажет вам, какие именно типы файлов поддерживает и отображает ваша команда.

Кстати, если вы не можете найти страницу man / info для самой "ls" ("man ls" / "info ls"), попробуйте поискать в пакете "coreutils" ("info coreutils"). Также обратите внимание, что среди более распространенных платформ платформы Microsoft, как правило, не очень хорошо переводят в вывод «ls», поэтому вы можете увидеть странное поведение, флаги или другую необычную информацию в выводе, в зависимости от того, какой была ваша версия «ls». составлено, с чем оно было связано и т. д.

Еще одно предостережение: отметка времени файла обычно представляет собой дату / время последнего изменения файла , а не время создания файла. На самом деле, в файловой системе un * x-ish нет записи о времени создания файла; поле ctime НЕ означает «время создания», как в файловых системах FAT / NTFS, а скорее означает «время изменения inode [C]» - время последнего изменения самого inode. Временные метки «mtime» (последний [M] odified) и atime (последний [A] ccesed / read) одинаковы в обеих системах - хотя точность (например, FAT имеет степень детализации 2 секунды) и часовой пояс могут отличаться ,


4
Какая система включает символические ссылки в число ссылок?
celtschk

1
К сожалению, я не ясно .. Ни одна система , я знаю , включает в себя символические ссылки в ссылке кол .. я только имел в виду « что представляет собой„ссылку“». Например, в Windows «ссылка оболочки» считается ссылкой, но большинство консольных команд будут обрабатывать ее как обычный файл. Это включает в себя ls, который не будет включать его в число ссылок. Насколько мне известно, если источники 'ls' не изменены иным образом, он сообщает только то, что ОС сообщает о количестве ссылок.
CM

1
Включение файлов sym-links и .lnk потребует проверки всего каталога. Просто чтобы перечислить файл. Это будет медленно, вааааааааааааа. Это включает в себя только жесткую ссылку. Это количество записей каталога, которые есть в файле. (он используется сборщиком мусора. Когда счетчик ссылок становится равным нулю, файл удаляется.)
ctrl-alt-delor

1
Обычно мое понимание операционных систем (ОС) и файловых систем (ФС) будет соответствовать, но я время от времени видел некоторые странности с определенными ОС и ФС. Хотя, это не всегда часть OS / FS; Иногда странности являются результатом попытки портировать инструмент с одной ОС на другую, а затем пытаться настроить его для новой платформы - например, различия в поле CTIME между EXT и FAT / NTFS - и как NTFS реализует различные виды «ссылок» (ссылки оболочки, точки повторной обработки и т. Д.), Что затрудняет точное и единообразное определение.
CM

1
Дополнительное примечание: размер файла для каталога - это только размер метаданных каталога, а не общий размер файлов в каталоге.
Висбуки

31

В системах GNU lsэто очень подробно описано на странице информации. Все , что вам нужно сделать , чтобы найти его: просто открыть man lsи найти в конце ссылки на полную документацию: info coreutils 'ls invocation'.

Вот цитата из нее:

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

Спасибо! Я был не уверен насчет значения «специальный файл символов» символа c в первом столбце при перечислении/dev/
Бруно Броноски

3

Первый столбец - это режим файла, следующий столбец - номера ссылок, которыми обладает файл, третий и четвертый - имя владельца и группы, к которой принадлежит файл. В следующем столбце указано количество байтов файла (в некоторых lsреализациях есть -hвозможность просмотреть эту информацию в более удобной для пользователя форме). Последние два столбца указывают метку времени и имя файла. Вы бы прочитали справочную страницу для получения дополнительной информации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.