Jump to content

файл (команда)

(Перенаправлено с Libmagic )
файл
Разработчик(и) AT&T Bell Laboratories
Первоначальный выпуск 1973 ( 1973 ) как часть Unix Research Version 4 ; 1986 ( 1986 ) повторная реализация с открытым исходным кодом
Репозиторий github /файл /файл
Написано в С
Операционная система Unix , Unix-подобные , Plan 9 , IBM i
Платформа Кросс-платформенный
Тип типа файла Детектор
Лицензия Лицензия BSD , CDDL
План 9: МОЯ лицензия
Веб-сайт дарвинсис /файл /

The file Команда — стандартная программа Unix компьютерном и Unix-подобных операционных систем для распознавания типа данных, содержащихся в файле .

Оригинальная версия file возник в версии 4 Unix Research [ 1 ] в 1973 году. System V принесла серьезное обновление с несколькими важными изменениями, в первую очередь перемещением информации о типе файла во внешний текстовый файл, а не компиляцией ее в сам двоичный файл.

В большинстве основных дистрибутивов BSD и Linux используется бесплатная , повторная реализация с открытым исходным кодом написанная в 1986–87 годах Яном Дарвином. [ 2 ] с нуля; он хранит информацию о типе файла в текстовом файле с форматом, основанным на версии System V. Он был расширен Джеффом Коллайером в 1989 году, и с тех пор в него внесли вклад многие другие, включая Гая Харриса, Криса Лоута и Эрика Фишера; с конца 1993 года его обслуживание организует Христос Зулас . Система OpenBSD имеет собственную реализацию подмножества, написанную с нуля, но по-прежнему использует коллекцию магической информации в формате файлов Дарвина/Зуласа.

The file Команда также была перенесена в операционную систему IBM i . [ 3 ]

Спецификация

[ редактировать ]

Единая спецификация UNIX (SUS) определяет, что для файла, указанного в командной строке, выполняется серия тестов:

  1. если файл не может быть прочитан или его тип файла Unix не определен, file Программа укажет, что файл был обработан, но его тип не определен.
  2. file должен уметь определять каталог типов , FIFO , сокет блока , специальный файл и специальный символьный файл.
  3. файлы нулевой длины идентифицируются как таковые
  4. рассматривается начальная часть файла и file заключается в использовании позиционно-чувствительных тестов
  5. рассматривается весь файл и file заключается в использовании контекстно-зависимых тестов
  6. файл идентифицирован как data файл

fileЧувствительные к положению тесты обычно реализуются путем сопоставления различных мест в файле с текстовой базой данных магических чисел (см. раздел «Использование»). Это отличается от других более простых методов, таких как расширения файлов и схемы, такие как MIME .

В реализации System V, реализации Яна Дарвина и реализации OpenBSD file Команда использует базу данных для проверки ведущих байтов. Эта база данных реализована в файле с именем magic, расположение которого обычно находится в /etc/magic, /usr/share/file/magic или подобное место.

Использование

[ редактировать ]

СУС [ 4 ] предполагает следующие варианты:

  • -M file, укажите специально отформатированный файл, содержащий тесты, чувствительные к положению; позиционно-зависимые тесты по умолчанию и контекстно-зависимые тесты выполняться не будут.
  • -m file, что касается -M, но тесты по умолчанию будут выполняться после тестов, содержащихся в file.
  • -d, выполнить позиционно-зависимые и контекстно-зависимые тесты по умолчанию для данного файла; это поведение по умолчанию, если только -M или -m указано.
  • -h, не разыменовывайте символические ссылки , указывающие на существующий файл или каталог.
  • -L, разыменуйте символическую ссылку, указывающую на существующий файл или каталог.
  • -iне классифицируйте файл дальше, чем идентифицируйте его как несуществующий, специальный блочный файл, специальный символьный файл, каталог, FIFO , сокет, символическую ссылку или обычный файл. Линукс [ 5 ] и БСД [ 6 ] с этой опцией системы ведут себя по-другому и вместо этого выводят тип интернет-носителя тип MIME »), идентифицирующий распознанный формат файла.

Другие Unix и Unix-подобные операционные системы могут добавлять дополнительные параметры, кроме этих. Реализация Яна Дарвина добавляет -s 'специальные файлы', -k «продолжать» или -r «сырой» (примеры ниже) и многие другие. [ 5 ]

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

$ file file.c
file.c: C program text
$ file program
program: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked
    (uses shared libs), stripped
$ file /dev/hda1
/dev/hda1: block special (0/0)
$ file -s /dev/hda1
/dev/hda1: Linux/i386 ext2 filesystem

Обратите внимание, что -s — это нестандартная опция, доступная только в ветке Ian Darwin, которая сообщает file читать файлы устройств и пытаться идентифицировать их содержимое, а не просто идентифицировать их как файлы устройств. Обычно file не пытается прочитать файлы устройства, поскольку чтение такого файла может иметь нежелательные побочные эффекты.

$ file -k -r libmagic-dev_5.35-4_armhf.deb    # (on Linux)
libmagic-dev_5.35-4_armhf.deb: Debian binary package (format 2.0)
- current ar archive
- data

Благодаря нестандартному варианту Яна Дарвина -k программа не останавливается после первого найденного совпадения, а ищет другие совпадающие шаблоны. -r Опция, доступная в некоторых версиях, приводит к тому, что непечатаемый символ новой строки отображается в необработанном виде, а не в восьмеричном представлении.

$ file compressed.gz
compressed.gz: gzip compressed data, deflated, original filename, `compressed', last
    modified: Thu Jan 26 14:08:23 2006, os: Unix
$ file -i compressed.gz    # (on Linux)
compressed.gz: application/x-gzip; charset=binary
$ file data.ppm
data.ppm: Netpbm PPM "rawbits" image data
$ file /bin/cat
/bin/cat: Mach-O universal binary with 2 architectures
/bin/cat (for architecture ppc7400):	Mach-O executable ppc
/bin/cat (for architecture i386):	Mach-O executable i386
$ file /usr/bin/vi
/usr/bin/vi: symbolic link to vim

Идентификация символических ссылок доступна не на всех платформах и будет разыменована, если -L передается или POSIXLY_CORRECT установлен.

Библиотека Либмагик

[ редактировать ]

Начиная с версии 4.00 версии Яна Дарвина/Христоса Зуласа. file, функциональность file включен в libmagic библиотека , доступная через C (и C-совместимую) ссылку; [ 7 ] [ 8 ] file реализуется с использованием этой библиотеки. [ 9 ] [ 10 ]

  1. ^ «Источник справочной страницы «файла» UNIX V4» . Архивировано из оригинала 10 декабря 2019 г. Проверено 13 марта 2022 г.
  2. ^ Ранняя история этой программы записана в ее частном репозитории CVS; см. [1] Архивировано 1 апреля 2017 г. на Wayback Machine, журнал основной программы.
  3. ^ «Программирование Qshell в IBM System i версии 7.2» (PDF) . ИБМ . Архивировано (PDF) из оригинала 05 марта 2021 г. Проверено 05 сентября 2020 г.
  4. ^ «Базовые спецификации открытой группы, выпуск 7 — file команда » . Архивировано из оригинала 12 октября 2018 г. Проверено 20 августа 2014 г.
  5. ^ Перейти обратно: а б file(1) Linux пользователя Руководство – Пользовательские команды
  6. ^ file(1) NetBSD по общим командам Руководство
  7. ^ libmagic(3) Linux программиста Руководство – Библиотечные функции
  8. ^ libmagic(3) NetBSD функциям библиотеки Руководство по
  9. ^ Зулас, Христос (27 февраля 2003 г.). «файл-3.41 теперь доступен» . Файл (список рассылки). Архивировано из оригинала 4 марта 2016 года . Проверено 1 января 2013 г.
  10. ^ Зулас, Христос (24 марта 2003 г.). «файл-4.00 теперь доступен» . Файл (список рассылки). Архивировано из оригинала 28 декабря 2016 года . Проверено 1 января 2013 г.
[ редактировать ]

Страницы руководства

[ редактировать ]
  • Fine Free File Command - домашняя страница версии Яна Дарвина. file используется в основных дистрибутивах BSD и Linux.
  • binwalk — инструмент для анализа прошивки, который вырезает файлы на основе сигнатур libmagic.
  • TrID — альтернатива, предоставляющая ранжированные ответы (вместо одного) на основе статистики.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a144a04f389ca27cdb8f5a0965785f3c__1716950760
URL1:https://arc.ask3.ru/arc/aa/a1/3c/a144a04f389ca27cdb8f5a0965785f3c.html
Заголовок, (Title) документа по адресу, URL1:
file (command) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)