19 апреля, 2024

Основы Linux. Часть 19 (создание ссылок на файлы)

Содержание:

С возвращением, мои хакеры!

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

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

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

Файловая структура в Linux

Мы знаем, что иерархическая структура файловой системы Linux отличается от структуры в Windows, но изнутри файловые системы ext2, ext3, ext4 (наиболее популярные файловые системы для Linux) сильно отличаются от NTFS в Windows. На структурном уровне Linux хранит все файлы в трех основных разделах:

  • Суперблок (Superblock)
  • Таблица индексных дескрипторов (Inode Table)
  • Блоки данных (Data Block)

Давайте кратко пробежимся по каждому из них.

Суперблоки

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

Читать также:  Виды Киберпреступлений: Кибервуайеризм

Таблица индексных дескрипторов (Inode Table)

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

Всегда важно помнить, что при удалении файла удаляется только индексный дескриптор (inode).

Блоки данных

Блоки данных содержат данные, хранящиеся в самих файлах, а также имя файла.

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

Жесткие ссылки

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

«Мягкие» или символические ссылки

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

Шаг 1. Просмотр ссылок

Давайте посмотрим, как ссылки выглядят в файловой системе Kali. Перейдем к директории /bin. Помните, что каталог /bin находится чуть ниже корня файловой системы и содержит большинство из тех команд, которые мы ежедневно используем в Linux.

кali> cd /bin

Посмотрим на файлы в директории bin.

кali> ls -l

Обратите внимание, что несколько файлов здесь показывают стрелку (->), указывающую на другой файл. Это и есть символические ссылки. Также обратите внимание, насколько мал их размер. Каждая из них занимает всего 6 байт. Это потому, что они являются всего лишь указателями, показывающими на другой файл. Блок данных такой ссылки просто содержит информацию о пути к файлу, на который она ссылается.

Читать также:  Установка Raspberry Pi — «безголовой» платформы для взлома под управлением Kali Linux

Когда вы редактируете символически связанный файл, то фактически вы редактируете целевой (тот на который указывает ссылка) файл, так как символический файл — это всего лишь путь к целевому файлу. Надеемся, что это понятно.

Шаг 2. Создание символических ссылок

Давайте создадим несколько ссылок. Начнем с символических, поскольку они наиболее распространены в большинстве систем. Хотя символические ссылки могут быть созданы где угодно, мы создадим их в каталоге metasploit-framework, чтобы облегчить себе запуск msfconsole.

Для начала перейдите в каталог /usr/share/metasploit-framework.

кali > cd /usr/share/metasploit-console

Посмотрим на содержимое этой директории.

кali> ls -l

Чтобы создать символическую или мягкую ссылку, мы воспользуемся командой ln (от слова «link») с ключом -s (символическая) и укажем имя файла, на который хотим сослаться (целевой файл). Затем зададим имя для ссылки, которую хотим создать. Вы можете использовать как относительные пути, так и абсолютные пути для связывания двух файлов.

Обычно, когда мы хотим войти в консоль Metasploit, мы вводим msfconsole, помните? Теперь давайте предположим, что мы хотим изменить это так, чтобы мы могли просто набрать в консоли metasploit и войти в консоль, вместо того чтобы постоянно помнить это неудобное слово — «msfconsole». Можно связать новый файл metasploit со старым файлом msfconsole (т.е. сделать ссылку), чтобы всякий раз, когда мы вводим в консоль metasploit, он переадресовывался на msfconsole.

Вот как можно это сделать

kali> ln -s msfconsole metasploit

Обратите внимание, насколько маленький размер у символического файла-ссылки metasploit. Всего лишь 12 байт, потому что это только указатель, путь к файлу, к которому он привязан.

Теперь, для того чтобы войти в msfconsole, мы можем просто ввести либо metasploit, либо msfconsole, и оба приведут к одному и тому же месту — консоли Metasploit Framework.

Читать также:  Основы VPN-шифрования

Шаг 3. Создание жестких ссылок

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

Вернемся к нашему примеру с msfconsole. Давайте создадим еще и жесткую ссылку между msfconsole и более простой командой, скажем, msf. Мы можем сделать это, набрав в консоли такую команду:

kali> ln msfconsole msf

Как видно на скриншоте выше, мы создали жесткую ссылку под названием msf. Помните, что жесткие ссылки совместно используют один и тот же inode со связанным файлом, именно поэтому они имеют одинаковый размер. Также обратите внимание, что наш новый файл msf имеет тот же размер, что и msfconsole в 4103 байта. Теперь, когда мы захотим вызвать (запустить) msfconsole, у нас есть возможность ввести как metasploit, msf, так и исходный вариант запуска msfconsole. Все они будут работать одинаково хорошо.

Предыдущие статьи ( 1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18).

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