В ранних версиях UNIX, таких как SVR3 или 4.1BSD, поддерживались только жесткие ссылки.
Также может иметь смысл заглянуть на сайт kazan.pr52.ru, ведь именно там можно узнать много нового на тему http://kazan.pr52.ru/catalog/5955. Тема насосы может показаться на первый взгляд незначительной и даже не тематичной. Но стоит посетить сайт kazan.pr52.ru, и тема насосы начинает проявлять себя с неожиданной стороны и вызывает всё больший интерес. Дело в том, что тема насосы очень подробно представлена на сайте kazan.pr52.ru. Трудно найти более детальное освещение темы насосы чем это сделано на сайте kazan.pr52.ru. Спасибо сайту kazan.pr52.ru за такое доскональное преподнесение темы насосы.
Хотя такие ссылки очень удобны, они обладают некоторыми недостатками. Жесткая ссылка не может пересечь границы файловой системы. Создание ссылок на каталоги часто разрешается только суперпользователю, который не особо «горит» желанием это делать. Дело в том, что невнимательно созданные ссылки способны повлечь создание замкнутой цепи в дереве каталогов, что приведет к возникновению проблем у многих утилит, таких как du или find, просматривающих дерево каталогов рекурсивно.
Единственной причиной, по которой система UNIX разрешает пользователям (привилегированным) создавать жесткие ссылки на каталоги, является отсутствие вызова mkdir в ранних версиях ОС (SVR2 и менее).
Для создания каталога пользователь должен был вызывать функцию mknod, которая создавала специальный файл каталога, после чего двукратно вызывался link для добавления «.» и «..». Это приводило к появлению некоторых проблем, а также состязательности, поскольку три вышеперечисленные операции не являются неделимыми [1]. Вызов mkdir (и rmdir) появился в системе SVR3, но поддержка жестких связей с каталогами осталась в ОС для обратной совместимости со старыми приложениями.
При применении жестких ссылок также имеют место проблемы управления. Представьте, что пользователь X является владельцем файла с именем /usr/X/filel. Другой пользователь (Y) может создать на этот файл жесткую ссылку и вызывать ее как
/usr/Y/linkl
Для этого пользователю Y достаточно иметь права на выполнение в каталоги, присутствующие в полном имени, и права на запись в каталог /usr/Y. Через некоторое время пользователь X вправе произвести удаление ссылки на filel, после чего считать, что файл был удален (обычно пользователи не проверяют счетчики ссылок на свои файлы). Однако файл продолжает существовать, так как на него имеется еще одна ссылка.
Конечно, владельцем ссылки /usr/Y/linkl является пользователь X, хотя она была создана Y. Если пользователь X защитит файл от записи, пользователь Y не сможет произвести в нем изменения. Более того, пользователю X необязательно желать, чтобы файл существовал постоянно. В системах, где использование диска лимитируется квотами, файл будет ограничивать доступное пространство пользователя X. Пользователь X не имеет возможности узнать местонахождение ссылки, если пользователь Y защитил каталог /usr/Y от чтения (или если X не знает номер индексного дескриптора файла).
В системе 4.2BSD были впервые представлены символические ссылки, которые могут быть как абсолютными, так и относительными. Позже это новое средство было принято большинством разработчиков ОС, а также добавлено в файловую систему s5fs SVR4. Для создания символической ссылки служит вызов symlink. Ссылка — это специальный файл, указывающий на другой файл (или связываемый с файлом). Для идентификации файла как символической ссылки используются ее атрибуты. Внутри такого файла содержатся данные, показывающие путь к связываемому файлу. Многие системы позволяют сохранять короткие имена путей к ссылкам внутри их индексного дескриптора. Впервые такая возможность появилась в ULTRIX.
Полное имя символьной ссылки может быть как абсолютным, так и относительным. Процедуры преобразования путей опознают символьные ссылки и преобразуют их с целью получения имени связанного с ними файла. Если используется относительное имя, то оно интерпретируется в зависимости от каталога, в котором находится ссылка. Хотя символические ссылки обрабатываются незаметно для большинства программ, некоторые утилиты должны обладать возможностью их обнаружения и обработки. Это можно сделать при помощи системного вызова Istat, который запрещает преобразование последней символьной ссылки на полное имя. Таким образом, если ссылка mylink указывает на файл myfile, то вызов lstat(mylink,...) возвратит атрибуты mylink, а вызов stat(mylink, ...) покажет атрибуты myfile. Имея возможность обнаружения ссылок при помощи Istat, пользователь в состоянии просмотреть содержимое ссылки, вызвав функцию readlink.
Опубликовал katy
July 08 2015 08:21:24 ·
0 Комментариев ·
2735 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.