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

Вопрос или проблема

Команда ls -al выводит следующий результат:

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

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

В порядке вывода:
-rwxrw-r– 1 root root 2048 Jan 13 07:11 afile.exe

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

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

первый символ чаще всего -, l или d. D указывает на каталог, – представляет обычный файл, l – это символическая ссылка (или мягкая ссылка), остальные буквы используются для других типов специальных файлов
три группы символов, три раза, указывающие права для владельца, группы и других:

r = доступно для чтения
w = доступно для записи
x = исполняемое (для файлов) или доступное (для каталогов)

За этим может следовать другой символ, если есть расширенные права, например, Linux ACL, которые обозначаются знаком +.

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

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

Число жестких ссылок означает количество имен, имеющих inode, т.е. ссылки, созданные с помощью ln без параметра -s.

Вывод команды "ls" зависит от версии "ls", используемых опций, используемой платформы и т.д. Исходя из вашего примера, похоже, что вы используете ее с типичной un*x (например, Linux) и, вероятно, используете типичную современную версию "ls". В этом случае:
-rwxrw-r– 10 root root 2048 Jan 13 07:11 afile.exe
?UUUGGGOOOS 00 UUUUUU GGGGGG #### MON DD XX:XX FILENAME
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^- Имя файла.
| | | | | | | | | ————– Время последнего изменения.
| | | | | | | | ——————— Размер файла ИЛИ для размера каталога метаданных. (Размер, как правило, в байтах на современных системах; смотрите ниже.)
| | | | | | | ————————– Имя группы (например, Пользователи, Администраторы и т.д.)
| | | | | | ——————————— Учетная запись владельца
| | | | | —————————————- Количество ссылок (то, что составляет "ссылку" здесь, варьируется)
| | | | ——————————————— Альтернативный доступ (пустое место означает, что ничего не определено, что-то другое варьируется)
| ————————————————— Права доступа на чтение, запись и специальные права для [U]пользователя, [G]руппы и [O]стальных (всех остальных)
——————————————————- Флаг типа файла

Я не уверен, почему количество ссылок для примера файла, который вы указали, так велико. Некоторые платформы имеют необычное представление о том, что составляет "ссылку". Обычно они включают жесткие и символические ссылки, а также записи каталогов (вот почему у каталогов иногда есть большое количество ссылок – его родитель имеет одну ссылку, каталог имеет ссылку на себя в записи ., а каждое из его подкаталогов имеет ссылку обратно через ..).
Некоторые версии и/или флаги командной строки будут показывать количество использованных блоков вместо количества байт; файловая система с размером блока 1024 байта будет перечислять все размеры до 1024 байт как "1", что означает, что используется 1 блок, от 1025 до 2048 как "2", использующих 2 блока, и так далее. Но перечисление размеров блоков по умолчанию (без явного использования параметра командной строки) встречается редко на большинстве современных систем unx.
Флаг специального/альтернативного доступа обычно представляет собой пустое пространство, но на некоторых платформах он может использоваться для указания на наличие специальных/альтернативных режимов доступа (таких как ACL и дескрипторы безопасности на WIN32 и т.д.), и варьируется широко – обратитесь к своему руководству, страницам man, инструменту info или другим источникам информации.
Флаги прав (режим) (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 нет записи о времени создания файла; поле ctime НЕ означает "время создания", как это происходит в файловых системах FAT/NTFS, а скорее означает "время изменения [C]inode" – время последнего изменения самого inode. Таймстемпы "mtime" (последнее [M]одифицированное) и "atime" (последнее [A]ccessed/чтение) одинаковы на обеих системах – хотя точность (например, FAT имеет гранулярность в две секунды) и часовой пояс могут варьироваться.

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

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

-l' –format=long’
`–format=verbose’
В дополнение к имени каждого файла, отображайте тип файла, биты режима файла, количество жестких ссылок, имя владельца, имя группы, размер и временную метку (*см. Форматирование временных меток файлов::), как правило, время изменения. Для информации, которую невозможно определить, отображайте вопросительные знаки.

Обычно размер выводится в виде подсчета байт без знаков препинания, но это можно переопределить (*см. Размер блока::). Например, `-h' выводит сокращенный, удобочитаемый подсчет, а `--block-size="'1"' выводит подсчет байтов с разделителем тысяч текущей локали.

Для каждого перечисленного каталога предшествуйте файлам строкой `total BLOCKS', где BLOCKS - это общее дисковое пространство для всех файлов в этом каталоге. Размер блока в настоящее время по умолчанию составляет 1024 байта, но его можно переопределить (*см. Размер блока::). Вычисленные BLOCKS считают каждую жесткую ссылку отдельно; это, возможно, является недостатком.

Тип файла – это один из следующих символов:

`-‘
обычный файл

`b’
специальный файл блочного устройства

`c’
специальный файл символьного устройства

`C’
файл высокой производительности ("непрерывные данные")

`d’
каталог

`D’
дверь (Solaris 2.5 и выше)

`l’
символическая ссылка

`M’
оффлайн ("перемещенный") файл (Cray DMF)

`n’
специальный сетевой файл (HP-UX)

`p’
FIFO (именованный канал)

`P’
порт (Solaris 10 и выше)

`s’
сокет

`?’
какой-то другой тип файла

Биты режима файла аналогичны символическим спецификациям режима (*см. Символические режимы::). Однако `ls' объединяет несколько битов в третий символ каждого набора прав следующим образом:

`s’
Если бит set-user-ID или set-group-ID и соответствующий исполняемый бит установлены.

`S’
Если установлен бит set-user-ID или set-group-ID, но соответствующий исполняемый бит не установлен.

`t’
Если установлен флаг ограниченного удаления или защитный бит, и установлен другой исполняемый бит. Защищенный флаг удаления – это другое название защитного бита. *Обратите внимание на Структуру режима::.

`T’
Если установлен флаг ограниченного удаления или защитный бит, но другой исполняемый бит не установлен.

`x’
Если установлен исполняемый бит и ни один из вышеуказанных не применим.

`-‘
В противном случае.

После битов режима файла следует один символ, указывающий, применим ли альтернативный метод доступа, такой как список контроля доступа, к файлу. Когда символ, следующий за битами режима файла, является пробелом, альтернативный метод доступа отсутствует. Когда это печатаемый символ, тогда такой метод существует.

GNU `ls' использует символ `.' для обозначения файла с контекстом безопасности SELinux, но без другого альтернативного метода доступа.

Файл с любой другой комбинацией альтернативных методов доступа помечен символом `+'.

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

Вот краткая шпаргалка, пытающаяся обобщить информацию.

Ответ или решение

Команда ls -al используется в системах Unix и Linux для вывода списка файлов и каталогов с подробной информацией о каждом из них. Рассмотрим, что означают все поля в выводе этой команды на примере строки:

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

Поля вывода:

  1. Права доступа (file permissions): -rwxrw-r--

    • Первый символ указывает на тип файла: - означает обычный файл, d — каталог, l — символическая ссылка и др.
    • Далее следует три группы символов, каждая из которых состоит из трех символов (r, w, x):
      • Первый набор (права для владельца): rwx — владелец имеет право на чтение (r), запись (w) и выполнение (x) файла.
      • Второй набор (права для группы): rw- — группа имеет право на чтение и запись, но не на выполнение.
      • Третий набор (права для остальных): r-- — остальные пользователи имеют право только на чтение.
  2. Количество жестких ссылок (number of hard links): 10

    • Указывает количество жестких ссылок на данный файл. Этот счетчик включает сам файл и относится к inode (индивидуальный идентификатор файла в файловой системе).
  3. Имя владельца (owner name): root

    • Имя пользователя (владельца файла).
  4. Имя группы (owner group): root

    • Имя группы, к которой принадлежит файл. Это может быть группа, к которой принадлежит владелец, или любая другая группа.
  5. Размер файла в байтах (file size in bytes): 2048

    • Размер файла в байтах. Этот размер обычно показывает, сколько места файл занимает на диске.
  6. Время последней модификации (time of last modification): Jan 13 07:11

    • Дата и время последнего изменения файла. В данном случае: 13 января в 07:11.
  7. Имя файла или каталога (file/directory name): afile.exe

    • Имя файла или директории, о которых идет речь.

Краткое резюме прав доступа:

  • Права доступа обозначаются символами r, w, x, где:
    • r — разрешение на чтение,
    • w — разрешение на запись,
    • x — разрешение на выполнение.
  • Если у пользователя нет данного права, ставится символ -.

Вывод команды ls -al может варьироваться в зависимости от версии ls, опций командной строки и операционной системы. Важно подробно ознакомиться с документацией (man ls), чтобы понять все детали и нюансы.

Если файл имеет особые права доступа, например, через ACL (списки контроля доступа), может отображаться символ + после прав доступа. Символ . указывает на файл с контекстом безопасности SELinux.

Следует помнить, что в Unix-подобных файловых системах нет информации о времени создания файла (ctime), лишь о времени последнего изменения (mtime) и последнего доступа (atime).

Оцените материал
Добавить комментарий

Капча загружается...