Что такое файл в линукс

Типы файлов Linux

В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Unix-подобная ОС не следит за расширениями файлов. Задача связать расширения файла с конкретным пользовательским приложением, в котором этот файл будет открываться, видимо лежит на какой-либо дополнительной программе. В свою очередь пользовательское приложение анализирует структуру данный файла, расширение ему также безразлично.

Таким образом, среди файловых атрибутов, хранящихся в операционной системе на базе ядра Linux, нет информации о типе данных в файле. Там есть информация о более существенном разделении, связанном с тем, что в Unix-подобных системах все объекты – это файлы. Все объекты весьма разнообразны. Поэтому тип файла в Linux – это скорее тип объекта, но не тип данных как в Windows.

В операционной системе GNU/Linux существуют следующие типы файлов: обычные файлы, каталоги, символьные ссылки, блочные устройства, символьные устройства, сокеты, каналы. Каждый тип имеет собственное обозначение одним символом. Знание этих символов нам пригодится в дальнейшем при изучении командной оболочки Bash.

Обычные файлы (-)

Сюда относятся все файлы с данными, играющими роль ценной информации сами по себе. Linux все-равно текстовый перед ним файл, исполняемый или картинка. В любом случае это будет обычный (regular) файл. Все они обозначаются знаком минус «-«. Остальные типы файлов считаются специальными (special).

Каталоги (d)

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

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

В Unix-подобных системах один и тот же файл может существовать под разными именами и/или в разных каталогах: все имена будут связаны с одним и тем же индексным дескриптором (механизм жестких ссылок).

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

Символьные ссылки (l)

Символьная ссылка – это файл, в данных которого содержится адрес другого файла по его имени (а не индексному дескриптору).

Выполнение символьной ссылки приводит к открытию файла, на который она указывает. Это аналог ярлыков в операционной системе Windows.

Если удалить исходный файл, то символьная ссылка продолжит существовать. Она по-прежнему будет указывать на файл, которого уже нет.

Символьные ссылки не содержат атрибутов файлов, на которые они указывают. У них есть собственные атрибуты.

Символьные (c) и блочные устройства (b)

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

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

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

Сокеты (s) и каналы (p)

Чтобы понять, что такое канал и сокет, необходимо понимание процессов в операционной системе. И каналы и сокеты организуют их взаимодействие. Пользователь с данными типами файлов почти не сталкивается.

Ключевым отличием канала от сокета является то, что канал однонаправлен. Через канал один процесс всегда передает данные второму, но не наоборот. Сокеты позволяют передавать данные в разных направлениях, т. е. осуществляют связь.

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

Команда file

Хотя выше было сказано, что Линукс не делает предположение о типе данных в обычном файле, есть специальная утилита, которая выполняет эту задачу, – программа file. Для этого она анализирует начало содержимого файла и находит в нем специальные «сигналы», характерные для определенного типа – бинарного файла, текстового, изображения и др.

На скриншоте также показано, что расширение для программы file безразлично. Файл flag – копия flag.png, и программа успешно его идентифицировала как изображение.

Команда file имеет множество различных ключей.

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

Источник

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

Всё есть файл

Давайте сначала разберемся как вообще это может работать. В Linux есть такое понятие как корневая файловая система. В качестве неё монтируется раздел жесткого диска, на котором установлен Linux. В различные подпапки подключаются другие реальные разделы жесткого диска, например, домашний раздел подключается в папку /home, а загрузочный в папку /boot. Но существуют не только реальные файловые системы, но и виртуальные файловые системы, созданные ядром, например в папку /proc монтируется файловая система procfs, которая позволяет получить доступ к параметрам ядра, а в папку /dev монтируется devfs содержащая устройства, подключённые к компьютеру и тоже в виде файлов.

Конечно, в этих файловых системах размещены не совсем обычные файлы. В статье типы файлов Linux мы рассматривали все существующие типы файлов. Если вы посмотрите на обычный файл, например, /etc/passwd с помощью утилиты file, то увидите информацию об этом файле:

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 10 41 03. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 10 41 03. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 10 41 03. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Это текстовый файл в реальной файловой системе и вы можете открыть его с помощью текстового редактора, посмотреть содержимое или записать туда данные.

Давайте начнём с устройств. В каталог /dev монтируется файловая система devfs и тут находятся все подключённые к Linux устройства, а также некоторые интерфейсы для доступа к возможностям ядра:

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 10 43 29. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 10 43 29. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 10 43 29. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Если попытаться посмотреть информацию, например, о файле /dev/sda1, то утилита сообщит нам что это блочный файл:

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 10 52 17. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 10 52 17. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 10 52 17. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

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

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 10 51 19. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 10 51 19. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 10 51 19. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Работает это и в обратную сторону. Вы можете открыть любой обычный файл в редакторе разделов диска и создать в нём файловую систему вместо его содержимого:

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 11 00 32. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 11 00 32. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 11 00 32. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Например, здесь я открыл изображение. Важно отметить что всё содержимое файла будет стёрто.

Ещё в каталоге /dev существуют символьные файлы, например, /dev/random, /dev/null и /dev/zero. Открывая первый вы всегда будете получать случайную последовательность данных, во второй можно записывать любые данные и они никуда не будут сохранены, а третий всегда пустой, если копировать из него данные на какой-нибудь раздел, там всегда будут нули.

Информация об операционной системе, ядре и выполняемых в системе процессах находится в директории /proc. Все эти файлы можно посмотреть с помощью утилиты ls:

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 11 14 17. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 11 14 17. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 11 14 17. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Например, информация об использовании оперативной памяти размещена в файле /proc/meminfo. Вы можете попытаться посмотреть информацию об этом файле:

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 11 08 02. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 11 08 02. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 11 08 02. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Это файл, но утилита сообщает, что он пустой. Однако, если вы попытаетесь прочитать из него данные, то получите вполне интересную информацию о состоянии памяти. Например, откроем его в текстовом редакторе:

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 11 10 01. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 11 10 01. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 11 10 01. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Но записать туда ничего не получится, эта файловая система доступна только для чтения. Таких файлов здесь много. Самые интересные из них описаны здесь.

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 11 18 28. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 11 18 28. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 11 18 28. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Он тоже вроде как пустой. Но в нём содержаться данные:

И их можно изменить:

echo «0» | sudo tee /proc/sys/net/ipv4/ip_forward

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 11 21 38. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 11 21 38. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 11 21 38. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Фактически, можно было просто сделать так:

echo «0» > /proc/sys/net/ipv4/ip_forward

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

Для сетевого взаимодействия и взаимодействия между программами используются сокеты. И это тоже файлы, хотя они чуть отличаются от привычных нам файлов. Сокеты используются для того чтобы программно писать и читать их них данные, таким образом программы могут взаимодействовать между собой. Давайте создадим свой сокет. Для этого выполните:

Утилита file сообщит, что это сокет:

Что такое файл в линукс. Snimok ekrana ot 2020 10 27 11 31 55. Что такое файл в линукс фото. Что такое файл в линукс-Snimok ekrana ot 2020 10 27 11 31 55. картинка Что такое файл в линукс. картинка Snimok ekrana ot 2020 10 27 11 31 55. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Но открыть сокет в текстовом редакторе или с помощью утилиты cat не получится, придется подключится к нему с помощью той же утилиты nc:

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

Выводы

Вот так и работает концепция всё есть файл в Linux. Все возможные функции операционной системы представлены в виде файлов и это удобно, потому что для доступа к любой из функций не надо писать отдельный инструмент, а можно использовать уже существующие и проверенные программы. Такие утилиты для работы с файлами как cat, ls и echo справляются в большинстве случаев.

Источник

Типы файлов в Linux

Пространство нашего жесткого диска занято файлами разных типов. Например, взять даже наш корневой раздел (/), при создании файла, файловая система записывает его в определенном формате на нужное физическое место жесткого диска. Всегда, для работы с файлами используется файловая система, но не всегда она записывает файлы на диск, файловая система может работать на лету, генерируя файлы, например, как procfs, с помощью которой может быть выполнена настройка ядра linux или записывать файлы в оперативную память, как tmpfs расположенная в папке /tmp. Но все это не имеет значения, ведь в любом случае мы имеем дело именно с файлами.

В системе Linux нет различий между каталогами и файлами. Но каталоги могут объединять другие файлы в группы, чтобы их было легче найти и использовать. Все аппаратные устройства представлены в виде файлов и находятся в каталоге dev, только через эти файлы программы могут работать с ними.

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

Типы файлов в Linux

Файлы в операционной системе Linux можно поделить на три основных типа:

Дальше рассмотрим более подробно эти типы файлов linux.

Обычные файлы

Это файлы, с которыми мы привыкли работать каждый день, они могут содержать текст, исполняемые инструкции для программ, изображения или другую информацию. Это самый распространенный тип файлов, которые вы можете найти в системе Linux. Рассмотрим небольшой список относящихся сюда файлов:

Утилита ls может определять тип файла в режиме списка, обычные файлы обозначаются черточкой, например:

Что такое файл в линукс. files1. Что такое файл в линукс фото. Что такое файл в линукс-files1. картинка Что такое файл в линукс. картинка files1. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

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

Посмотреть форматы файлов linux можно с помощью утилиты file. Например:

Что такое файл в линукс. files2. Что такое файл в линукс фото. Что такое файл в линукс-files2. картинка Что такое файл в линукс. картинка files2. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Система сообщила что это исполняемый файл, а теперь посмотрим обычный, текстовый:

Что такое файл в линукс. files3. Что такое файл в линукс фото. Что такое файл в линукс-files3. картинка Что такое файл в линукс. картинка files3. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Утилита умеет распознавать все известные форматы файлов. Чтобы узнать вывести все доступные форматы файлов linux наберите:

Специальные файлы

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

Утилита ls обозначает блочные файлы буквой b, например, выберем все блочные файлы из каталога /dev:

Что такое файл в линукс. files. Что такое файл в линукс фото. Что такое файл в линукс-files. картинка Что такое файл в линукс. картинка files. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Утилита file, которую мы рассматривали в предыдущем разделе тоже умеет определять типы файлов:

Что такое файл в линукс. files4. Что такое файл в линукс фото. Что такое файл в линукс-files4. картинка Что такое файл в линукс. картинка files4. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

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

Вы также можете отфильтровать их с помощью ls. Символьные файлы обозначаются буквой c (character):

Что такое файл в линукс. files5. Что такое файл в линукс фото. Что такое файл в линукс-files5. картинка Что такое файл в линукс. картинка files5. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Но вернемся к символическим ссылкам. Утилита ls обозначает их буквой l (link):

Что такое файл в линукс. files6. Что такое файл в линукс фото. Что такое файл в линукс-files6. картинка Что такое файл в линукс. картинка files6. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Создавать символические ссылки можно с помощью утилиты ln. Например:

Обозначаются такие типы файлов linux буквой p (pipe):

Что такое файл в линукс. files7. Что такое файл в линукс фото. Что такое файл в линукс-files7. картинка Что такое файл в линукс. картинка files7. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Чтобы создать именованный тоннель вы можете использовать утилиту mkfifo:

echo «test test test» > pipe1

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

while read line ;do echo «Data: ‘$line’ «; done

Файлы сокетов обозначаются буквой s:

Что такое файл в линукс. files11. Что такое файл в линукс фото. Что такое файл в линукс-files11. картинка Что такое файл в линукс. картинка files11. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Создать сокет можно с помощью функции socket() на языке программирования Си, чтение и запись выполняется системными вызовами read() и write(). Но нам сейчас не нужно писать реальную программу, будет достаточно немного поиграться. Поэтому воспользуемся утилитой nc. Создаем Unix сокет:

Что такое файл в линукс. files9. Что такое файл в линукс фото. Что такое файл в линукс-files9. картинка Что такое файл в линукс. картинка files9. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Подключаемся к нему из другой консоли:

Все данные, которые вы будете набирать в одной из консолей будут отправляться на другую после нажатия Enter, связь работает в обоих направлениях.

Каталоги

Это специальные файлы, которые позволяют объединять другие и каталоги в группы для более простой навигации и поиска. Естественно, они могут содержать как обычные, так и специальные файлы, одним словом любые типы файлов ос linux. В системе Linux, файлы организуются в папки начиная от корня (/)

Обозначаются каталоги буквой d (directory):

Что такое файл в линукс. files10. Что такое файл в линукс фото. Что такое файл в линукс-files10. картинка Что такое файл в линукс. картинка files10. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Создать каталог в linux можно с помощью команды mkdir:

Заключение

Теперь у вас более четкое представление о том, почему в linux все является файлами, а также какие типы файлов в linux существуют в вашей системе. Вы можете найти более подробную информацию по каждому виду файлов в интернете, но если у вас остались вопросы, можете задать их в комментариях!

Источник

Записки IT специалиста

Технический блог специалистов ООО»Интерфейс»

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

За примерами далеко ходить не надо, каждый пользователь Windows знает, что файлы лежат в папках, папки на разделах (логических дисках), а систему следует искать в папке Windows системного диска. Точно также любой Linux администратор будет искать настройки в /etc, логи в /var/log, а свои собственные документы в /home.

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

Структура файловой системы

Начнем с привычного и понятного.

Что такое файл в линукс. linux filesystem 001. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 001. картинка Что такое файл в линукс. картинка linux filesystem 001. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Этот момент вызывает у новичков множество непониманий. Но на самом деле нет ничего сложного, файловая система в Linux просто организована по-другому, но при этом она по-своему стройна, логична и понятна.

Давайте еще раз рассмотрим схему с Windows. На ней имеется один физический диск для системы, второй для пользовательских данных и компакт диск с музыкой. А теперь взглянем на другую схему, где мы показали аналогичную организацию размещения данных в среде Linux.

Что такое файл в линукс. linux filesystem 002. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 002. картинка Что такое файл в линукс. картинка linux filesystem 002. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.У нас также имеется системный диск, на котором расположен корень файловой системы и все системные папки. Пользовательские данные все также располагаются на втором физическом диске, но в системе вы его не увидите. Почему? Да потому что в файловой системе Linux такого понятия нет. Новички на этом месте обычно впадают в панику, считают что диск не определился и начинают судорожно искать его где можно и где нельзя.

Съемные носители, такие как компакт-диски, флешки и т.п. в графической среде монтируются автоматически в предопределенную директорию /media, а в рабочем окружении появляется ярлык, что делает работу с ними неотличимой от Windows. В серверной среде вам потребуется монтировать съемные носители вручную, также вы можете выбрать произвольную точку монтирования, но лучше не изобретать велосипед, а использовать /media.

В Linux процесс выглядит немного посложнее: новый диск временно монтируется, скажем, в /mnt, затем на него переносится содержимое папки /home/Музыка, после чего он монтируется на постоянной основе в точку /home/Музыка. В итоге наша коллекция лежит на отдельном жестком диске, но все плейлисты как работали с /home/Музыка так и продолжают работать.

Эту возможность трудно переоценить, особенно когда надо вынести на отдельный раздел не коллекцию музыки, а базу почтового сервера или содержимое хранилища виртуальных машин.

Имена файлов и расширения

Имена файлов и папок в Linux ограничены длинной в 256 символов и запретом на / (слеш). Отдельно следует упомянуть о символах . (точка) и

Что такое файл в линукс. linux filesystem 004 thumb 600xauto 6866. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 004 thumb 600xauto 6866. картинка Что такое файл в линукс. картинка linux filesystem 004 thumb 600xauto 6866. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.Если передать его по SSH то ситуация будет немного получше, подчеркиваниями заменятся только запрещенные символы, а просто перетащив файл из окна виртуальной машины мы получили третий вариант именования файла.

Что такое файл в линукс. linux filesystem 005. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 005. картинка Что такое файл в линукс. картинка linux filesystem 005. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.Поэтому, если вы не хотите превращения имени вашего файла в нечто совершенно неожиданное, то не используйте в именах символы:

Также не злоупотребляйте служебными символами в начале имени, например, никто не мешает создать вам файл с именем -text, однако при попытке скопировать его в консоли вы получите неожиданный результат:

Пока вы работаете с такими файлами в среде Linux проблем не будет, но если мы их попытаемся скопировать на флешку FAT32, то сразу возникнут затруднения.

Что такое файл в линукс. linux filesystem 007 thumb 600xauto 6871. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 007 thumb 600xauto 6871. картинка Что такое файл в линукс. картинка linux filesystem 007 thumb 600xauto 6871. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.Но это цветочки, ягодки будут тогда, когда вам понадобиться перенести на Windows платформу, скажем, веб-сайт со всем содержимым, куда на протяжении длительного времени заливались многочисленные image.jpg, Image.jpg или image.JPG.

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

Однако это не говорит, что Linux игнорирует расширения файлов. В графической среде, для удобства пользователя, расширения точно также ассоциируются с приложениями, как и в Windows. Но есть и отличия, вы можете дать файлу несуществующее расширение или оставить его без расширения вообще, система правильно определит тип содержимого и сопоставит его с программой. А вот присвоив ему зарезервированное расширение вы просто сопоставите файл программе, без учета его содержимого.

Что такое файл в линукс. linux filesystem 009 thumb 600xauto 6877. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 009 thumb 600xauto 6877. картинка Что такое файл в линукс. картинка linux filesystem 009 thumb 600xauto 6877. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.Как видим документ LibreOffice успешно определяется последним невзирая на «левое» или отсутствующее расширение, но присвоив ему расширение jpg, мы сопоставим его программе просмотра изображений и получим ошибку при открытии.

С изображением и иным медиаконтентом связана еще одна особенность, если у файла есть расширение, то система не будет определять его реальное содержимое и будет пытаться открыть его так, как указано в расширении. Простой пример: мы переименовали файл jpg в png, после чего получили ошибку при попытке его открыть, в тоже время тот же самый файл без расширения вообще открывается нормально.

Что такое файл в линукс. linux filesystem 010 thumb 600xauto 6880. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 010 thumb 600xauto 6880. картинка Что такое файл в линукс. картинка linux filesystem 010 thumb 600xauto 6880. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

В Windows jpg переименованный в png (и наоборот) открываться будет нормально, разве что специализированный софт (например, Photoshop) станет ругаться. Поэтому если у вас в Linux перестали открываться мультимедийные файлы, которые нормально открываются в Windows, попробуйте просто удалить им расширение, чтобы система самостоятельно определила содержимое. Для примера мы специально удалили расширения у файлов различных типов, что из этого вышло можно увидеть ниже:

Что такое файл в линукс. linux filesystem 011 thumb 600xauto 6883. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 011 thumb 600xauto 6883. картинка Что такое файл в линукс. картинка linux filesystem 011 thumb 600xauto 6883. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Конечно не со всеми типами файлов все гладко, так документы формата MS Office 2007 и выше (docx, xslx и т.п.) будут определяться как zip-архивы, которыми на самом деле и являются, но мы думаем, что ситуация, когда вы получите офисный документ без расширения на практике вам не встретится.

Жесткие и символические ссылки

Начав работать с Linux вы обязательно столкнетесь с этим типом файлов. Они не имеют прямого аналога в файловой системе Windows и поэтому на них стоит остановиться подробнее.

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

Что такое файл в линукс. 1233. Что такое файл в линукс фото. Что такое файл в линукс-1233. картинка Что такое файл в линукс. картинка 1233. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.Символические ссылки широко применяются в случаях, когда один и тот-же файл должен быть доступен под разными именами или в разных местах, но при этом его содержимое не должно меняться. Например, некое приложение требует библиотеку lib-1.0.1.so, в то время как есть совместимая библиотека lib-1.0.5.so, в этом случае создаем символическую ссылку на lib-1.0.5.so с именем lib-1.0.1.so и проблема решена. Другой случай, приложение требует lib-1.0.5.so, которая есть в системе, но ищет ее в другом месте, в этом случае делаем символическую ссылку с таким же именем, но в нужное расположение.

Что такое файл в линукс. linux filesystem 013 thumb 600xauto 6887. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 013 thumb 600xauto 6887. картинка Что такое файл в линукс. картинка linux filesystem 013 thumb 600xauto 6887. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

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

Что такое файл в линукс. linux filesystem 014. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 014. картинка Что такое файл в линукс. картинка linux filesystem 014. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.Для чего могут понадобиться жесткие ссылки? Самое распространенное их применение, это создание полных копий файла без лишних затрат дискового пространства. Например, инсталляционные пакеты. Допустим нам надо выложить на FTP несколько вариантов ПО, в каждый из наборов которого входят некие общие пакеты и документация, причем нужна синхронизация между этими файлами, например, если мы внесли изменения в документацию, это должно отразиться во всех наборах. Жесткие ссылки отлично решают эту задачу.

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

Жесткие ссылки, так как являются дополнительной записью в inode, могут использоваться только в пределах одного физического раздела. Также спецификации POSIX запрещают создание жестких ссылок для каталогов.

Права доступа

Еще одним неотъемлемым атрибутом любой файловой системы являются права доступа к файлам и папкам. Linux унаследовал классическую UNIX-систему прав, они не так гибки, как хотелось бы, но обеспечивают приемлемый уровень гибкости и безопасности для простых систем.

Права доступа к файлу (а как мы помним, в Linux все есть файл) хранятся в специальном 16-битовом поле атрибутов файла:

Тип объектаОсобые признакиПрава доступа
SUIDSGIDstickyПользовательГруппаОстальные
####sstrwxrwxrwx

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

Следующие три бита хранят особые признаки, влияющие на запуск исполняемых файлов и некоторые иные права, к ним мы вернемся несколько позже. И наконец следующие девять бит, разделенные на блоки по три бита содержат права доступа к файлу или директории.

Каждый файл в UNIX должен иметь владельца (пользователь, user), группового владельца (группа, group) и остальных пользователей (остальные, other), каждый из этих пользователей может иметь права на чтение (r), запись (w) и исполнение (x).

Что такое файл в линукс. linux filesystem 015 thumb 600xauto 6891. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 015 thumb 600xauto 6891. картинка Что такое файл в линукс. картинка linux filesystem 015 thumb 600xauto 6891. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.Как нетрудно заметить, w без х не имеет никакого смысла и равносильно его отсутствию.

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

OCTBINСимвольноеПрава на файлПрава на каталог
0000отсутствие правотсутствие прав
1001—xправо на исполнениеправо на доступ к файлам и атрибутам
2010-w-право на записьотсутствие прав
3011-wxправо на запись и исполнениевсе права, кроме получения имен файлов
4100r—право на чтениеправо на получение имен файлов
5101r-хправо на чтение и исполнениеправо на получение имен файлов и доступ к ним
6110rw-право на чтение и записьправо на получение имен файлов
7111rwxвсе прававсе права

В то время, как в системе используются преимущественно символьные обозначения, для целей администрирования обычно используются цифровые восьмеричные значения. Потому что проще, быстрее и удобнее написать, что права на файл должны быть 644, а не rw-r—r—.

На практике из всех сочетаний флагов доступа реально используются только 0, 4, 5, 6, 7 для файлов и 0, 5, 7 для папок.

Разобравшись с основными правами перейдем к особым признакам, таких три:

OCTBINНаименованиеДействие
1001stickyудалить файл может только владелец или root
2010SGIDфайл запускается на исполнение с правами группового владельца
4100SUIDфайл запускается на исполнение с правами владельца

Начнем с младшего бита, его установка означает установку sticky-бита для каталога, установка данного флага для файлов в современных системах игнорируется. Дословно sticky обозначает «липкий», что довольно хорошо соответствует его смыслу. После установки данного флага удалить файл из каталога может только его владелец или суперпользователь, даже если на файлы и папку стоят права 777.

Опции SUID и SGID позволяют любому пользователю запускать файл на исполнение с правами его владельца или группы. Для чего это нужно? В обычных условиях файл запускается с правами текущего пользователя, что не всегда достаточно для его работы. Например, таким образом работает утилита passwd, нам нужно чтобы пользователь имел возможность изменить свой пароль без повышения прав, но данная операция требует прав суперпользователя. Как быть? Использовать признак SUID. Если мы проверим права на утилиту, то увидим запись rwsr-xr-x или 4755.

Что такое файл в линукс. linux filesystem 017 thumb 600xauto 6897. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 017 thumb 600xauto 6897. картинка Что такое файл в линукс. картинка linux filesystem 017 thumb 600xauto 6897. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.При установке признаков SUID и SGID они заменяют символ x на s в соответствующей группе символьного представления или записываются перед основными правами в восьмеричном виде. Вообще-то в цифровом виде все права следует записывать в четырехзначном формате, так как если особые признаки не установлены, то это 000 BIN или 0 OCT. Т.е. правильно писать не 777, а 0777, но обычно для краткости первый ноль опускают.

Если установлены несколько признаков, то записывается восьмеричное число аналогичное установленным битам в двоичном формате, например, SUID + sticky это 101 BIN или 5 OCT. Установленный sticky-бит заменяет x на t в группе other. Ниже показан каталог с правами 7775 или rwsrwsr-t, что соответствует установке на него SUID, SGID и sticky-бит одновременно.

Что такое файл в линукс. linux filesystem 018 thumb 600xauto 6900. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 018 thumb 600xauto 6900. картинка Что такое файл в линукс. картинка linux filesystem 018 thumb 600xauto 6900. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.Данная запись сделана нами исключительно в тестовых целях, так как установка SUID для каталога не имеет смысла, а установка SGID приведет к тому, что групповым владельцем создаваемых в нем файлов будет группа владельца каталога, а не группа создавшего его пользователя, как происходит по умолчанию. Также, ввиду потенциальной опасности, игнорируется установка SUID и SGID для скриптов.

В графической среде установка прав разнится в зависимости от выбранного настольного окружения, например, в Unity настройки выполнены в понятной пользователю форме, но особые признаки не отображаются и не могут быть установлены, а для папок присутствует бесполезный набор прав r—.

Что такое файл в линукс. linux filesystem 019 thumb 600xauto 6903. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 019 thumb 600xauto 6903. картинка Что такое файл в линукс. картинка linux filesystem 019 thumb 600xauto 6903. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.В XFCE не потрудились задать понятные и логичные наборы для файлов и папок, ограничившись стандартным перечислением, включая бесполезные -w- и -wx, также отсутствует явное указание признака «исполняемый», вместо этого флаг x автоматически добавляется к любому набору прав владельца.

Что такое файл в линукс. linux filesystem 020 thumb 600xauto 6906. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 020 thumb 600xauto 6906. картинка Что такое файл в линукс. картинка linux filesystem 020 thumb 600xauto 6906. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.И наконец KDE сочетает достаточно лаконичный основной набор прав с возможностью установки признака «исполняемый» для файлов и sticky-бит для папок с возможностью явно указывать особые признаки в дополнительных настройках.

Что такое файл в линукс. linux filesystem 021 thumb 600xauto 6909. Что такое файл в линукс фото. Что такое файл в линукс-linux filesystem 021 thumb 600xauto 6909. картинка Что такое файл в линукс. картинка linux filesystem 021 thumb 600xauto 6909. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.В любом случае следует помнить, что графический интерфейс не является основным средством администрирования Linux, а представляет надстройку над средствами командной строки. В следующей части нашей статьи мы как раз уделим внимание приемам работы с файловой системой Linux в консольной среде.

Дополнительные материалы:

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Что такое файл в линукс. y100g. Что такое файл в линукс фото. Что такое файл в линукс-y100g. картинка Что такое файл в линукс. картинка y100g. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Или подпишись на наш Телеграм-канал: Что такое файл в линукс. telegram36. Что такое файл в линукс фото. Что такое файл в линукс-telegram36. картинка Что такое файл в линукс. картинка telegram36. В GNU/Linux как и других Unix-подобных операционных системах понятие типа файла не связано с расширением файла (несколькими буквами после точки в конце имени), как это обстоит в Windows.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *