В файловых системах ОС Linux основным логическим объектом является файл. Все объекты, включая устройства ввода/вывода информации и каналы межпроцессного взаимодействия, называются файлами. Определено семь функциональных типов файлов:
· обычные файлы;
· каталоги;
· символические ссылки;
· именованные каналы;
· сокеты;
· файлы символических устройств;
· файлы блочных устройств.
Внутренняя структура обычного файла для операционной системы совершенно безразлична, и файл воспринимается ею как простая последовательность байтов. Для операционной системы Linux не имеют значения расширения имён файлов, по которым можно судить об их типе. Расширение имени файла в ОС UNIX, в том числе и Linux, не предусмотрено по причине того, что символ «.» входит в состав имени файла наравне с другими символами. Точнее, пользователи могут присваивать файлам имена, содержащие точки и символы, напоминающие характерные для ОС семейства Windows расширения, но только для своего удобства.
Таким образом, внутренняя структура файла в ОС Linux целиком зависит от пользовательской программы. Исключение составляют собственно исполняемые файлы формата ELF (Executable and Linking Format), так как они непосредственно исполняются центральным процессором и запускаются при наличии установленного признака исполняемости. Они имеют по нулевому смещению от начала стандартную четырехбайтную сигнатуру, которая называется «магическим числом» файла.
В остальных случаях файл с установленным признаком исполняемости считается текстовым, содержащим строки с командами оболочки. Если первой строкой такого текстового файла является строка вида #!/bin/sh(допускается наличие пробелов после «!»), то первые два символа являются «магической комбинацией», а /bin/sh есть программа, которая будет запущена с передачей ей всех последующих строк файла. Если в первой строке отсутствует вышеописанное, то строки файла последовательно обрабатывает оболочка, обслуживающая данный терминал. Установленный признак исполняемости является необходимым, но не достаточным условием. Любому файлу можно установить сигнатуру исполняемости, но результат его запуска на исполнение будет зависеть от его содержимого.
Одна из утилит ОС Linux, именуемая file, умеет различать довольно много разновидностей файлов по их «магическим числам» и некоторым иным признакам внутреннего формата.