Чтение онлайн

на главную

Жанры

Linux глазами хакера

Флёнов Михаил Евгеньевич

Шрифт:

Когда мы выполняем команду

ls -l
, то на экране появляется подробная информация о файлах в текущей директории. Напомню ее вид:

– rw-r--r-- 1 Flenov FlenovG 118 Nov 26 16:10 1.txt

Если к директиве добавить ключ

i
(выполнить команду
ls -il
), то к выводимой информации добавится еще и дескриптор файла:

913021 -rw-r--r-- 1 Flenov FlenovG 118 Nov 26 16:10 l.txt

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

Жесткая

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

Для создания таких ссылок используется команда

ln
, которая имеет следующий вид:

ln имя_файла имя_ссылки

В ответ на это программа создаст жесткую ссылку с именем

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

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

cat > 1.txt

Нажмите клавишу <Enter> и введите несколько строк текста и нажмите клавиши <Ctr>+<D>. Теперь у вас есть необходимый файл для тестирования.

Создадим для файла 1.txt жесткую ссылку. Для этого выполните следующую команду:

ln 1.txt link.txt

С помощью команды

cat link.txt
выведите на экран содержимое файла link.txt и убедитесь, что оно идентично строкам в 1.txt. Теперь выполните команду
ls -il
, чтобы просмотреть содержимое каталога. В списке файлов должны быть две строки:

913021 -rw-r--r-- 2 root root 0 Feb 22 12:19 1.txt

913021 -rw-r--r-- 2 root root 0 Feb 22 12:19 link.txt

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

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

ls > link.txt

cat 1.txt

В первой строке мы сохраняем в файле link.txt результат работы команды

ls
(список содержимого директории), а вторая — отображает документ 1.txt. Убедитесь, что содержимое обоих файлов изменилось и имеет одинаковые данные.

Давайте попробуем удалить файл 1.txt и посмотреть на каталог и содержимое файла link.txt. Для этого выполните следующие команды:

rm 1.txt

ls -il

cat link.txt

Файл 1.txt будет удачно удален. А вот содержимое жесткой ссылки link.txt никуда не денется. То есть данные на диске не были уничтожены, а исчезло только имя 1.txt. Обратите внимание, что у файла link.txt в третьей колонке уменьшилось значение счетчика ссылок до единицы.

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

проблем. Для создания символьной ссылки нужно использовать команду
ln
с ключом
– s
. Например:

ln -s link.txt symbol.txt

Посмотрим на результат с помощью команды

ls -il
:

913021 -rw-r--r-- 1 root root 519 Feb 22 12:19 link.txt

913193 lrwxrwxrwx 1 root root 8 Feb 22 12:40 symbol.txt -> link.txt

Теперь дескрипторы файлов разные, но для

link.txt
первый символ следующей колонки равен букве "
l
". Как раз она и указывает на то, что мы имеем дело с символьной ссылкой. Третий параметр равен единице, а последний — после знака "
– >
" содержит имя файла, на который указывает ссылка.

Попробуем удалить основной файл и после этого просмотреть содержимое ссылки symbol.txt:

rm link.txt

ls -il

cat symbol.txt

В первой строке мы удаляем файл link.txt. Вторая команда отображает список директорий. Убедитесь, что файла link.txt нет. Если вы используете Red Hat- дистрибутив, то команда

ls
, скорей всего, имеет псевдоним, который, позволяет в зависимости от типа файла отображать его различными цветами. Если нет, то замените вторую команду на
ls --color=tty -il
.

Строка, содержащая информацию о ссылке symbol.txt, должна быть красного цвета, а текст — мигающий белый. Это говорит о том, что ссылка "битая", т.е. указывает на несуществующий файл. Команда cat

symbol.txt
пытается отобразить содержимое ссылки. Так как файла нет, мы увидим сообщение об ошибке.

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

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

Еще один минус таится в блокировках. Если открыть на редактирование файл, для которого создана символьная или жесткая ссылка, то он блокируется. Представим себе, что существует ссылка на файл /etc/passwd или /etc/shadow. При блокировке одного из них вход в систему станет невозможным.

Чтобы взломщик не смог воспользоваться блокировками, его права на запись в системные каталоги должны быть ограничены. А пользователю в большинстве случаев надо давать разрешение писать только в свою домашнюю директорию и каталог /tmp. Иногда при разделении файлов может потребоваться работа с чужими каталогами, но все равно доступ ограничивается каталогом /home, где расположены пользовательские директории.

Глядя на все недостатки ссылок, возникает вопрос — а нужно ли действительно использовать их? Я рекомендую это делать только в крайнем случае, когда все остальные способы решения проблемы еще хуже. Но если нет другого выхода, то делайте это аккуратно.

Поделиться:
Популярные книги

На границе империй. Том 9. Часть 3

INDIGO
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 3

Не ангел хранитель

Рам Янка
Любовные романы:
современные любовные романы
6.60
рейтинг книги
Не ангел хранитель

Право налево

Зика Натаэль
Любовные романы:
современные любовные романы
8.38
рейтинг книги
Право налево

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия

Первый среди равных. Книга III

Бор Жорж
3. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
6.00
рейтинг книги
Первый среди равных. Книга III

Фараон

Распопов Дмитрий Викторович
1. Фараон
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Фараон

Инквизитор Тьмы

Шмаков Алексей Семенович
1. Инквизитор Тьмы
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Инквизитор Тьмы

Барон устанавливает правила

Ренгач Евгений
6. Закон сильного
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Барон устанавливает правила

Сопротивляйся мне

Вечная Ольга
3. Порочная власть
Любовные романы:
современные любовные романы
эро литература
6.00
рейтинг книги
Сопротивляйся мне

Сам себе властелин 2

Горбов Александр Михайлович
2. Сам себе властелин
Фантастика:
фэнтези
юмористическая фантастика
6.64
рейтинг книги
Сам себе властелин 2

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Повелитель механического легиона. Том VI

Лисицин Евгений
6. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VI

Личник

Валериев Игорь
3. Ермак
Фантастика:
альтернативная история
6.33
рейтинг книги
Личник

Наследница долины Рейн

Арниева Юлия
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Наследница долины Рейн