Символические связи, это другой тип связей, отличающийся от жестких связей. Символические связи позволяют давать новые имена файлам, но при этом не ссылаются на индекс файла.
Команда ln -s
создаст символическую ссылку на указанный файл. Например, если мы воспользуемся
командой
# ln -s foo bar
мы создадим символьную ссылку
bar
, указывающую на файл foo
. Если теперь используем
команду ls -i
, то увидим, что два файла имеют различные индексы.
# ls -i foo bar
22195 bar 22192 foo
#
Однако, используя ls
-l
, мы видим, что файл bar
имеет символический указатель
на foo
.
# ls -l foo bar
lrwxrwxrwx 1 root root 3 Aug 5 16:51 bar -> foo
-rw-r--r-- 1 root root 12 Aug 5 16:50 foo
#
При символической ссылке
не используются биты прав доступа (они всегда отображаются, как rwxrwxrwx
).
Вместо этого, права доступа к файлу, полученному символической ссылкой, определяются
правами доступа к файлу, на который он ссылается (в нашем примере определяется
правами файла foo
).
Функционально, жесткие ссылки и символические ссылки похожи, но есть некоторые различия. Например, вы можете создать символическую ссылку на файл, который не существует; так нельзя сделать применительно к жесткой ссылке. Символические ссылки обрабатываются ядром иным образом, чем жесткие. Это скорее техническое отличие, но иногда важное. Символические ссылки полезны, поскольку они позволяют идентифицировать файл, на который они указывают; для жестких ссылок нет простого способа определить, какие файлы привязаны к одному и тому же индексу.
Ссылки используются во многих
местах системы Linux. Символические ссылки особенно важны для образов разделяемых
библиотек в /lib
. Смотри дополнительную информацию в Разделе 3.7.2.